知道弹出窗口何时关闭

时间:2012-01-17 17:18:30

标签: javascript jquery popup onunload

我有一个用

制作的弹出窗口
var popup = window.open(URL, ...)

弹出窗口的内容不在我的掌控之中。

我想知道弹出窗口何时关闭。我虽然

$(popup).unload()

可以帮助我,但是当弹出窗口出现时,firefox会触发卸载事件,而不是在它关闭时!

是否有一种可行的方法可以知道弹出窗口何时关闭? 我没有像弹出一样询问每个(比如说)500ms,如果它关闭了......

(我在How to know when popup is closed in javascript上找到了这个解决方案)

3 个答案:

答案 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.
};