在第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 ...
嗨,羅布,感謝你的地震響應。當移動到page3時,我失去page1的問題。 – DioNNiS 2012-02-13 12:07:21
@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
是的,看起來這是唯一合適的解決方案 – DioNNiS 2012-02-13 12:46:18