Javascript 知道弹出窗口何时关闭

Javascript 知道弹出窗口何时关闭,javascript,jquery,popup,onunload,Javascript,Jquery,Popup,Onunload,我有一个用 var popup = window.open(URL, ...) 弹出窗口的内容不在我的控制范围内 我想知道弹出窗口何时关闭。我想 $(popup).unload() 可以帮助我,但是firefox在弹出窗口出现时触发卸载事件,而不是关闭时 是否有一种方法可以通过开启器知道弹出窗口何时关闭? 我不特别喜欢轮询弹出窗口,每隔500毫秒询问它是否关闭 (我在上找到此解决方案)它似乎是弹出的。如果关闭,location将返回null,如果打开,则返回空集 popup.location

我有一个用

var popup = window.open(URL, ...)
弹出窗口的内容不在我的控制范围内

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

$(popup).unload()
可以帮助我,但是firefox在弹出窗口出现时触发卸载事件,而不是关闭时

是否有一种方法可以通过开启器知道弹出窗口何时关闭? 我不特别喜欢轮询弹出窗口,每隔500毫秒询问它是否关闭


(我在上找到此解决方案)

它似乎是弹出的。如果关闭,location将返回null,如果打开,则返回空集

popup.location // Open Window

=> Location 
      No Properties Defined

popup.location // Closed Window

=> null
使用以下各项进行测试:

if (popup.location) {alert('hello')}

如果您可以在弹出窗口中添加一个
onbeforeunload
事件
处理程序
,请尝试以下操作

家长:

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

var popup = window.open(URL, ...);
window.onbeforeunload = function(){
    window.opener.parentCallback();
    self.close();
};
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.
};
弹出窗口:

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

var popup = window.open(URL, ...);
window.onbeforeunload = function(){
    window.opener.parentCallback();
    self.close();
};
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.
};
或者利用
间隔
,这就是我的建议,比如

var pop_win = window.open(url,...);   
var timer = setInterval(function() {   
    if(pop_win.closed) {  
        clearInterval(timer);  
        alert('popup is closed');  
    }  
}, 1000);  

我知道这个问题有点老了,但对于其他正在寻找答案的人来说,我认为我找到了一个解决方案:

你也许可以这样做(不管怎样,这对我来说很有效,在FF中也是如此):

家长:

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

var popup = window.open(URL, ...);
window.onbeforeunload = function(){
    window.opener.parentCallback();
    self.close();
};
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.
};

这个问题已经被提出和回答了。试试看,我不知道这有什么关系。您是否建议在子窗口中添加卸载回调?您是否能够在弹出窗口中添加onbeforeunload回调?我想这需要轮询,但您是否建议轮询弹出对象直到其位置为空?没有其他选择吗?OP状态无法控制弹出窗口中的内容,尽管
onbeforeunload
回调的兼容性如何?好吧,这是唯一的秘密。。。几乎所有的浏览器都支持它。你是唯一一个提到windowRef.closed的人,你得到了我的投票。他不想做民意调查,但不幸的是,如果不这样做,似乎不可能做到正确。你说的
parent
,我很确定你的意思是
window
<代码>窗口不应根据函数上下文进行更改,据我所知,只有
会进行更改。