2011-05-16 86 views
0

有一個flash播放器彈出到單獨的彈出式瀏覽器窗口中。在源頁面上,Flash播放器只顯示一條消息,表明它當前彈出。獲取彈出窗口換頁後

現在,如果用戶導航離開源頁面(到同一域的另一頁),我如何獲得對彈出窗口的引用或只是檢測它是否打開(在新頁面上使用javascript)?

+0

你可以在新的頁面新頁面後打開彈出窗口底部寫腳本加載 – GustyWind 2011-05-16 04:56:29

+0

那會刷新彈出窗口,如果它已經加載,彈出窗口包含一個音頻播放器,所以重新加載會導致音樂播放中斷。 Facebook以其突出的聊天功能以某種方式做到這一點,在離開他們的網站之後,聊天仍然可用,並且在返回到他們的網站時不會重新加載,並且它顯示聊天在他們頁面的底部彈出。所以希望有這樣的事情 – 2011-05-16 05:07:52

回答

0

想通了。必須在彈出的窗口中有一個JavaScript定時器,它試圖在父窗口中執行一個函數,如果存在,它將簡單地隱藏播放器。

例如

彈出式視窗腳本

<script> 
    if(window.opener!=null) 
     setTimeout("popCheck();",2000); 

    function popCheck() 
    { 
     //Use try catch to prevent premission denied msgs in 
     //case parent window is on different domain 
     try 
     { 
      window.opener.setPoppedOut(); 
     } 
     catch(e) 
     { 
     } 
     //Check Every 2 seconds 
     setTimeout("popCheck();",2000); 
    } 

    window.onbeforeunload = function() 
    { 
     //Used to facilitate popin on window close 
     if(window.opener!=null) 
     { 
      try 
      { 
       window.opener.setPoppedIn(); 
      } 
      catch(e) 
      { 
      } 
     } 
    } 

</script> 

父窗口腳本

<script> 
    //Save the previous contents so that we can restore them later. 
    window.popoutContent = document.getElementById("popoutContent").innerHTML; 

    function setPoppedOut() 
    { 
     document.getElementById("popoutContent").innerHTML = "Player is Popped Out"; 
    } 
    function setPoppedIn() 
    { 
     document.getElementById("popoutContent").innerHTML = window.popoutContent; 
    } 
</script>