gpt4 book ai didi

javascript - 来自父窗口的跨域window.close事件

转载 作者:搜寻专家 更新时间:2023-11-01 05:06:50 24 4
gpt4 key购买 nike

例如我在域 1 上:

a.click(function(){
window.win=window.open(domain2,'name');
});

现在我在 domain2 上,我正在关闭它。 window.win 如何知道用户关闭了那个窗口?是否有任何事件或属性要通过间隔检查?

最佳答案

有一个属性不属于任何 W3C 规范。它被称为 closed 并且会被访问为

if( window.win.closed ) {
// window was closed
}

我不确定该属性的跨浏览器兼容性。我也不确定这在跨源域上的表现如何。但如果您尝试了,请让我和这个社区的其他人知道。


另一种选择是您自己处理通知。这意味着,您正在监听弹出窗口中的 onbeforeunload。当事件触发时,您可以使用 HTML5 的 postMessage 方法在跨域窗口之间进行通信。例如:

主窗口:

window.addEventListener('message', function(e) {
if( e.origin === 'http://www.popupdomain.com' ) {
if( e.data === 'closed' ) {
alert('popup window was closed');
}
}
}, false);

域 2:

window.onbeforeunload = function() {
window.opener.postMessage('closed', 'http://www.popupdomain.com');
};

此解决方案的唯一警告是它只与支持基本 HTML5 的浏览器兼容。在旧式浏览器上还有其他(偷偷摸摸的)方法可以进行跨域通信,但我想那是另一回事了。

关于javascript - 来自父窗口的跨域window.close事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com