2012-02-13 34 views
0

我有一個很奇怪的問題,請不要問我爲什麼我需要這個... 我有一個page1。 Page1有一個使用window.open函數打開新窗口(page2)的鏈接。 chatWindow是從window.open函數返回的子窗口處理程序。 現在我正在從第1頁移動到第3頁(通過鏈接<a href="...." target="_self">Some Text</a>)。如果page2關閉或打開,我需要檢查第3頁。 如何將處理程序chatWindow從page1傳遞給page3?如何將窗口處理程序從一個頁面傳遞到另一個頁面? (JavaScript)

預先感謝您!

回答

1

在第2頁和第3頁上,您可以使用window.opener參考第1頁。在頁面1中,可以定義一個方法來檢查page2是否仍然打開:window.open返回新窗口的實例,如果窗口已關閉,則返回null

請注意,只能從Windows讀取屬性,如果它們在同一個域中。如果它們來自不同的域,則可以使用window.postMessage方法啓用通信。

假設他們在同一個域,你可以使用下面的代碼(概念驗證代碼):

window.page2 = window.open('...'); 
window.page3 = window.open('...'); 

// At page3: 
if (window.opener && window.opener.page2 != null) { // Not null or undefined 
    // Do something 
} 

我已經使用全局變量的難易程度。一個更好的實現可以由一個命名空間組成:

window.openedWin = {}; 
window.openedWin.page2 = window.open('...'); 
... 
// At page3: 
if (window.opener && window.opener.openedWin && window.opener.openedWin.page2 ... 
+0

嗨,羅布,感謝你的地震響應。當移動到page3時,我失去page1的問題。 – DioNNiS 2012-02-13 12:07:21

+0

@DioNNiS這是一個不同的問題。你可以在'page2'中添加一個輪詢器,它定期向'page1'(和'page3')報告它們的存在。這可以通過使用'setInterval(function(){window.opener.page2 = window;},1000);'來完成,例如。當窗口關閉時也會報告:'window.onunload = function(){window.opener.page2 = null;};'。之前有人問過類似的問題,我[回覆](http://stackoverflow.com/a/7704292/938089?doing-pupups-correctly)。 – 2012-02-13 12:16:07

+0

是的,看起來這是唯一合適的解決方案 – DioNNiS 2012-02-13 12:46:18

相關問題