假设我在浏览器窗口V
中有一个变量A
。在此窗口中,我打开一个具有函数B
的新窗口F
(或iframe)。在那里,我将V
分配给F
。我关闭了窗口B
,然后在窗口A
中调用V();
。
不同的浏览器会有不同的行为,有些会抛出异常,尤其是当函数F
尝试使用自己窗口的DOM元素时。
我不希望这种情况发生,并想检查我是否可以拨打V
。
我的问题:有没有办法知道功能代码是否已经关闭的窗口?
答案 0 :(得分:0)
您可以使用unload
事件跟踪窗口状态:
document.getElementsByTagName('button')[0].addEventListener('click',newwin);
function newwin() {
var newwin=window.open('');
newwin.addEventListener('unload',lostwin);
}
function lostwin() {
console.log('window closed');
}
这样你就可以知道关闭了什么窗口,让你的应用程序知道它是否应该关闭expec窗口,如果还不够,请给jsfiddle提供示例。
答案 1 :(得分:0)
使用可能已关闭的Window
对象的.closed
property来检查它是否仍然可用。
if (!B.closed)
V();