2011-08-09 84 views
0

以下代碼在加載頁面時會生成一個JavaScript彈出窗口,然後在父窗口關閉時關閉彈出窗口。瀏覽網站時保留彈出窗口

<script language="JavaScript"> 
    var player; 
    function load() { 
    player = window.open('http://www.google.com','player','height=320,width=320,scrollbars,resizable'); 
    } 
    function unload() { 
     player.close(); 
    } 
window.onload = load; 
window.onunload = unload; 
</script> 

這工作正常,但它關閉了在網站上切換頁面時的彈出窗口。有沒有什麼辦法可以改變它來保持彈出窗口,直到實際的URL/Site窗口關閉?

+0

你可能要運行到彈出窗口攔截器該方法打開彈出窗口的問題。 – Pointy

+0

我不確定你的評論如何與我的問題相關... – Marty

+0

它不;這只是一個評論:-)我開始輸入一個答案,但它很長,我被叫去了;抱歉。詹姆斯約翰遜的答案基本上是我會建議的 - 從客戶端輪詢父(window.opener)。 – Pointy

回答

0

簡短回答是NO,掛入關閉窗口的事件的唯一方法是onunload,當文檔被卸載時(例如當您導航到另一個頁面時)觸發。

也許你可以在彈出窗口(帶有定時器或onfocus)上檢查window.opener,檢查產生彈出窗口的窗口是否仍然存在,如果沒有,關閉彈出窗口。

1

我認爲你必須檢查孩子的父窗口的狀態,而不是反之亦然。

此代碼尚未經過測試,但我正在刺傷的概念:

window.opener.onunload = 
    setTimeout(
      function(){ 
       if (!window.opener) self.close(); 
      }, 1000); 
+0

只是爲了澄清,您可以將此代碼放入子窗口(彈出)。 –

+0

嘿,我已經測試了這段代碼,但我不確定是否我正確實現了它,因爲當我導航到創建父窗口的同一網站中的新頁面時,窗口關閉。我使用此代碼: Marty

+0

只是爲了澄清,我添加了上面的代碼。如果我關閉了網站,它不會關閉彈出窗口。但如果我在彈出窗口並在網站關閉後重新加載它,則會關閉彈出窗口。如果父母關門,我該如何不斷檢查他們?我是否必須更改原始代碼中的卸載功能? – Marty

0

這可能會幫助您:

<script language="Javascript"> 
    var player; 
    function load() { 
     player = window.open('http://www.google.com','player','height=320,width=320,scrollbars,resizable'); 
    } 
    function unload() { 
     if (!(window.location.equals('http://yourSiteName.com'))) { 
      player.close(); 
     } 
    } 
window.onload = load(); 
window.onunload = unload(); 
</script> 
相關問題