2012-12-12 82 views
1

好吧,這裏的情況。的Javascript重新建立窗口父/子releationship當父被關閉

我有一個頁面打開一個新窗口。 然後,它設置在此新窗口的各種屬性,如父URL和父窗口的名字。

子窗口創建一個JavaScript定時器並每隔x秒回調一次父窗口。

父窗口關閉。

當孩子計時器過去時,我看到window.opener現在是空的。

如何檢查是否打開了具有父網址和父窗口名稱的另一個窗口? 然後,如果我找到一個匹配如何設置此匹配窗口作爲孩子的父母無需重新加載子窗口?

+0

不要以爲你能做到這一點 - 如果你可以,一個頁面可以看到所有的窗口/標籤/你在這一刻打開頁面。最好的解決辦法是同時與服務器通信。 – sachleen

+0

我很害怕這個。我會看看我有什麼選擇。 –

+0

通常爲父子關係,如這個,你有父關閉子當父被關閉。否則,除非兒童作爲孩子重新開放父母,否則無法將孩子重新連接到父母,這使得事情變得更加複雜。 – zzzzBov

回答

1

我沒有在所有主流瀏覽器中測試過。

// open the child window for first time 
window.open('test.html','WindowName'); 
// re-assigns the reference for the same child window to a variable 
WindowRef = window.open('','WindowName'); 

請注意url參數留空,彈出窗口名稱相同。它引用相同的子窗口並將引用對象分配給變量「WindowRef」。

上述代碼的最好的部分是,無論父頁面是否刷新,您都可以採用窗口的引用。

從複製: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/48485/parentchild-windows-references#post1323452

+0

經過測試並在ie7-9,FF 17.0.1,Opera 12.11,Safari 6.0.2上運行。 –

+0

我相信這個問題是,如果子窗口仍然使用相同的WindowName打開它會重新加載它。我們有一個java小程序運行在子窗口中,不能重新加載,因爲用戶的工作將會丟失。 –

+0

似乎沒有爲我加載。找到使用此模式的頁面。 http://josephj.com/lab/2011/window-open-reconnect/demo.html –