我正在寻找弹出窗口的近距离事件。我找到了一个for XUL,但我需要它用于HTML。
Popup有closed
属性。
>>> var popup = open('http://example.com/', 'popup', 'height=400,width=500');
>>> popup.closed
false
好吧,我可以check it once at half second。
function open_popup() {
var popup = open('http://example.com/', 'popup', 'height=450,width=450');
var timer = setInterval(function(){
if (popup.closed) {
alert('popup closed!');
clearInterval(timer);
}
}, 500);
}
我在Chrome 4.0.249.27,Opera 10.10,Safari 4.0.4和Firefox 3.5.5上进行了测试。一切正常。
但是setInterval打扰了我。这很难看。有没有更好的方法呢?
更新 我使用弹出窗口进行身份验证对话框(实际上是oAuth)。我想在弹出关闭后通过postMessage将一些数据发送到父窗口。
来自其他域的弹出窗口中的页面。因此,由于安全限制,我无法向其添加任何事件(unload
)。
由于iframe buster脚本,我无法使用iframe。所以,我不能使用任何花哨的jQuery模态对话框。
我无法在弹出窗口中编辑任何。
答案 0 :(得分:1)
您可能需要查看unload
事件,请查看Javascript: Popups
编辑:正如您所说,您无法在弹出窗口内编辑任何内容,实际上没有任何选项。我相信您当前的setInterval
代码可以正常工作。您应该问自己,实时检测弹出结束是否绝对至关重要。 500毫秒计时器肯定不会对任何资源造成压力,也不会让计算机瘫痪。
答案 1 :(得分:0)
答案 2 :(得分:0)
在弹出窗口中使用window.opener。例如:
onunload = opener.alert('popup closed');
或
onunload = opener.nameOfAFunction();