JS:当儿童窗口关闭时听

Ole*_*nko 54 javascript

我正在以这种方式打开facebook的子窗口:

window.open(sharingUrl,'','toolbar=0,status=0,width=626,height=436');
Run Code Online (Sandbox Code Playgroud)

当用户单击共享或关闭时窗口自动关闭...有没有办法为这些事件添加监听器?

jes*_*vin 117

如果在调用时存储对子窗口的引用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • @Xaerxess总是有更多选票的空间!;) (3认同)

Odu*_*buc 9

对于将来的参考,我想分享另一个不需要的解决方案setInterval:

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

  • 将赞赏建设性评论而不是减1.您使用什么浏览器来测试它. (2认同)
  • Same-Origin适用,这使得无法在不同域中附加这样的处理程序。 (2认同)