[英]The proper way to handle popup closing
我正在寻找弹出窗口的关闭事件。 我 为 XUL找到了一个,但我需要它来用于 HTML。
Popup 已closed
属性。
>>> var popup = open('http://example.com/', 'popup', 'height=400,width=500');
>>> popup.closed
false
嗯,我可以半秒检查一次。
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 模式对话框。
我无法在弹出窗口中编辑任何内容。
您可能想查看unload
事件,查看Javascript: Popups
编辑:正如您所说,您无法在弹出窗口中编辑任何内容,实际上已经没有任何选项了。 我相信您当前的setInterval
代码可以很好地完成工作。 您应该问问自己,实时检测弹出窗口关闭是否绝对重要。 那个 500 毫秒的计时器当然不会使任何资源紧张或使某人的计算机瘫痪。
在弹出窗口中使用 window.opener。 即类似:
onunload = opener.alert('popup closed');
要么
onunload = opener.nameOfAFunction();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.