如何监听子窗口关闭?

问题描述 投票:0回答:4

我正在以这种方式打开 Facebook 共享的子窗口:

window.open(sharingUrl,'','toolbar=0,status=0,width=626,height=436');

当用户单击共享或关闭时,窗口会自动关闭...

有没有办法为这些事件添加监听器?

javascript dom-events cross-domain
4个回答
157
投票

如果您在调用

window.open()
时存储对子窗口的引用,则可以使用
setInterval()
进行轮询,以使用
window.closed
属性查看窗口是否仍处于打开状态。下面的示例每秒检查两次。

var child = window.open('http://google.com','','toolbar=0,status=0,width=626,height=436');
var timer = setInterval(checkChild, 500);

function checkChild() {
    if (child.closed) {
        alert("Child window closed");   
        clearInterval(timer);
    }
}

其他人注意:如果您曾经处于可以控制子窗口中的html的情况,您可以使用onbeforeunload事件并提醒父窗口。


23
投票

为了将来的参考,我想分享另一个不需要的解决方案

setInterval

var child = window.open('http://google.com','','toolbar=0,status=0,width=626,height=436');
child.onunload = function(){ console.log('Child window closed'); };

0
投票

var child = window.open('http://google.com','','toolbar=0,status=0,width=626,height=436');

// Called even when loading and unloading.
child.onunload = function(){ 

    // What matters here
    setTimeout(function(){
        if (child.closed) {
            console.log('Child window closed'); 
        }
    }, 300);
};

-2
投票

这会很好用

   <html>
<head>
<title>Detecting browser close in IE</title>
<script type="text/javascript">

window.onbeforeunload = function(){ myUnloadEvent(); }
function myUnloadEvent() {
    alert ('You can have Ur Logic Here ,');

}

</script>
</head>
</script>
</head>
<body >
<h1>Close the Window now</h1>
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.