1

我有一个弹出窗口:

var popup = window.open(URL, ...) //content of popup is not in my control

我想知道弹出窗口何时关闭,并认为下面的代码可以帮助我。

$(popup).unload()

但是,Firefox 在弹出窗口出现时启动卸载事件,而不是在它关闭时!

有没有一种可靠的方法可以通过开启者来知道弹出窗口何时关闭?

我不特别喜欢轮询弹出窗口,询问每(比如说)500 毫秒是否关闭......

(我在如何知道在 javascript 中关闭弹出窗口时找到了这个解决方案)

4

3 回答 3

2

如果您可以onbeforeunload event handler在弹出窗口中添加一个然后尝试这样的事情,

家长:

function parentCallback(){
  alert("popup is closed");
}

var popup = window.open(URL, ...);

弹出:

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);  
于 2012-01-17T17:47:06.870 回答
0

如果 popup.location 关闭,它似乎将返回 null ,如果它打开,则返回一个空集。

popup.location // Open Window

=> Location 
      No Properties Defined

popup.location // Closed Window

=> null

测试:

if (popup.location) {alert('hello')}
于 2012-01-17T17:30:58.930 回答
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.
};
于 2013-06-05T14:40:27.877 回答