我有一个用
制作的弹出窗口var popup = window.open(URL, ...)
弹出窗口的内容不在我的掌控之中。
我想知道弹出窗口何时关闭。我虽然
$(popup).unload()
可以帮助我,但是当弹出窗口出现时,firefox会触发卸载事件,而不是在它关闭时!
是否有一种可行的方法可以知道弹出窗口何时关闭? 我没有像弹出一样询问每个(比如说)500ms,如果它关闭了......
(我在How to know when popup is closed in javascript上找到了这个解决方案)
答案 0 :(得分:1)
如果您可以在弹出窗口中添加onbeforeunload
event
handler
,请尝试使用此类内容,
<强>父:强>
function parentCallback(){
alert("popup is closed");
}
var popup = window.open(URL, ...);
<强> POPUP:强>
window.onbeforeunload = function(){
window.opener.parentCallback();
self.close();
};
否则使用interval
,这就是我所建议的,例如
var pop_win = window.open(url,...);
var timer = setInterval(function() {
if(pop_win.closed) {
clearInterval(timer);
alert('popup is closed');
}
}, 1000);
答案 1 :(得分:0)
看来popup.location如果关闭则返回null,如果打开则返回空集。
popup.location // Open Window
=> Location
No Properties Defined
popup.location // Closed Window
=> null
测试:
if (popup.location) {alert('hello')}
答案 2 :(得分:0)
我知道这个问题有点陈旧,但对于寻找答案的其他人,我认为我找到了解决方案:
你或许可以这样做(无论如何它对我有用,也在FF中):
<强>父:强>
var popup = window.open("about:blank"); // Or whatever page you are loading
popup.onunload = function(){
parent.location.reload();
// or
parent.alert("Popup closed!");
// or any other handler in the parent window,
// just remember to call it on the parent object.
};