2008-10-21 97 views
5

我從我的網站爲一些成員打開一個新的瀏覽器窗口。然而,有些人稍後可能會關閉它,或者最初可能無法打開。如何確認瀏覽器窗口已打開,並使用Javascript?

是否有可能在每一頁上運行,以確認是否另一個瀏覽器窗口是打開的,如果沒有,則提供一個鏈接,重新打開它相當普通的JavaScript代碼段?

[澄清:]要檢查的代碼是打開的窗口將在其他頁面上運行 - 而不僅僅是在打開它的同一窗口和URL中。想象一下,用戶登錄後,窗口(試圖)打開,然後他們在相同的標籤頁/窗口(或其他人)周圍瀏覽一段時間,然後關閉第二個窗口(或從未打開過) - 我希望能夠注意到/窗口已經關閉了一些時間在開放初期嘗試之後它關閉後,所以我不知道檢查從window.open()(與popup_window_handle.closed)的JavaScript的回報是很容易使用,或確實可能。

回答

4

excellent, comprehensive article(「彈出窗口幾乎完全控制」)應該回答你關於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> 

增加: 你可以得到窗口參考彈出的名字這樣處理早在另一頁:

window_handle = window.open(page,'myPopupName'); 

我猜你的情況,你應該想想一個一致的方式在整個應用程序中創建的彈出窗口的所有名稱。

1
var myWin = window.open(...); 

if (myWin.closed) 
{ 
    myWin = window.open(...); 
} 
+0

多久會的「myWin」變量可用?只是在同一頁面上? – 2008-10-21 12:21:26

0

還有就是要檢查它的每一個彈出窗口阻止程序具有不同的行爲沒有統一的辦法。例如,Opera不會顯示彈出窗口,但widow.closed會在場景後面返回false。Opera保留被阻止窗口的影子副本,以防萬一用戶想要看到它。

相關問題