如何判断Javascript中是否存在窗口?

时间:2011-01-24 18:03:44

标签: javascript

我已经看到了如何查看特定脚本打开的窗口是否仍然打开,但如果没有,会怎样?

我有一个小窗口,有一个按钮可以点击加载大窗口。当我关闭大的那个时,如果小的一个关闭,我想要一个特定的onUnloadonBeforeUnload来解雇;如果它仍然打开,那些程序将不会触发。我可能只是一个巨大的脑屁但我无法弄清楚如何检查另一个窗口是否打开。大的不是打开它,所以我不能简单地记录打开它的手柄。

简短来说:如果窗口A打开了窗口B,如果窗口A仍然存在,如何在窗口B中检查?

4 个答案:

答案 0 :(得分:22)

if(window.opener && !window.opener.closed)
    alert('Yup, still there.');

答案 1 :(得分:17)

如果您弹出一个窗口并且它已关闭(通过脚本或用户),

window.closed将设置为true。

var win = window.open('...')';
if (win.closed)

您的案例似乎如下:

在弹出窗口中,您可以使用window.opener.closed检查打开它的窗口是否仍然打开

按名称获取窗口的句柄

我提到没有办法在评论中按名称获取窗口句柄。但是,我做了一些研究,发现以下工作在FF / IE / Chrome中;它是一个黑客,我没有看到它在任何地方提到的预期行为,所以我不会太依赖它,但它找到它的工作很有趣!在我的代码中,我仍然只是确保传递所需的句柄。

//opened a window without storing a handle, but gave it a name
window.open('/some/url', 'xxx');

// now I need to get a reference to that window
// Calling open without setting a url gets you
// a reference and doesn't reload the window
var win = window.open('', 'xxx')

答案 2 :(得分:1)

使用try {}并catch(err){}。

try{
window.opener.document.body.getElementById('#elementId'); // do some action with window. opener
}
catch(err){
// if we are here then probably there is no window.opener
window.close(); // closing this window or whatever you want
}

答案 3 :(得分:0)

尝试以下代码:

if (!!window) {
  console.log('Exist');
}