如何检测函数的窗口是否不再存在

时间:2013-12-04 20:48:40

标签: javascript iframe

假设我在浏览器窗口V中有一个变量A。在此窗口中,我打开一个具有函数B的新窗口F(或iframe)。在那里,我将V分配给F。我关闭了窗口B,然后在窗口A中调用V();

不同的浏览器会有不同的行为,有些会抛出异常,尤其是当函数F尝试使用自己窗口的DOM元素时。

我不希望这种情况发生,并想检查我是否可以拨打V

我的问题:有没有办法知道功能代码是否已经关闭的窗口?

2 个答案:

答案 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');   
}

http://jsfiddle.net/8uCVr/

这样你就可以知道关闭了什么窗口,让你的应用程序知道它是否应该关闭expec窗口,如果还不够,请给jsfiddle提供示例。

答案 1 :(得分:0)

使用可能已关闭的Window对象的.closed property来检查它是否仍然可用。

if (!B.closed)
    V();