如何使用Javascript确认浏览器窗口是否已打开?

Ali*_*man 5 javascript popup

我正在从我的网站为一些成员打开一个新的浏览器窗口.但是,有些人可能会稍后将其关闭,或者最初可能无法打开.

是否有一个相当简单的Javascript片段可以在每个页面上运行以确认是否有另一个浏览器窗口是打开的,如果没有,提供一个重新打开它的链接?

[澄清:]要检查的代码是打开的窗口将在其他页面上运行 - 而不仅仅是在打开它的同一窗口和URL中.想象一下,用户登录,窗口(尝试)打开,然后他们在相同的选项卡/窗口(或其他)中浏览一段时间,然后关闭第二个窗口(或者它从未打开) - 我希望能够注意窗口在初次尝试打开后/关闭后的一段时间内已经关闭,所以我不确定从window.open()(使用popup_window_handle.closed)检查javascript的返回是否很容易使用,或者确实可能.

spl*_*tne 4

这篇优秀、全面的文章 (“几乎完全控制弹出窗口”)应该可以回答您有关 javascript 弹出窗口的所有问题。

“JavaScript 1.1 还引入了窗口关闭属性。使用此属性,可以检测窗口是否已打开并随后关闭。如果启用 JavaScript 1.1 时窗口仍然打开,我们可以使用它将页面直接加载到打开器窗口中浏览器:”

<script language="JavaScript"><!--
function open_main(page) {
    window_handle = window.open(page,'main');
    return false;
}
//--></script>

<script language="JavaScript1.1"><!--
function open_main(page) {
    if (opener && !opener.closed) {
        opener.location.href = page;
    }
    else {
        window_handle = window.open(page,'main');
    }
    return false;
}
//--></script>

<a href="example.htm" onClick="return open_main('example.htm')">example.htm</a>
Run Code Online (Sandbox Code Playgroud)

添加: 您可以通过以下方式引用弹出窗口的名称来在另一个页面中获取窗口句柄:

window_handle = window.open(page,'myPopupName');
Run Code Online (Sandbox Code Playgroud)

我想在您的情况下,您应该考虑一种一致的方法来创建整个应用程序中弹出窗口的所有名称。