2013-04-17 38 views
1

我正在做一個應用程序,其中一個窗口需要與另一個窗口交談,即使它們最初不是來自公共頁面。在Chrome中似乎有這樣的要求。Chrome瀏覽器窗口定位沒有公共啓動關係

這兩個窗口來自我控制的同一個域,但可以從書籤啓動一個,而從Excel工作表啓動另一個窗口。

我來到這裏演示:

http://cfpreview12.dmclub.net/Frametest/europe.htm

去那個URL(使用Chrome) - 啓動法國 - 啓動德國 - 點擊 「轉到巴黎」 和它的工作原理(因爲法國和德國有一個共同的推薦人)。

現在複製法國選項卡的URL,關閉選項卡,創建一個新選項卡 手動並粘貼URL。

當你回到德國然後點擊「去巴黎」時,會創建一個新選項卡,看起來是因爲Chrome沒有看到沒有共享遺產的窗口之間的關係。

我可以完全控制兩個頁面(法國和德國),但在真正的 使用,沒有這樣的事情,歐洲。

解決方法的任何想法?

回答

0

您將無法直接使用target;您必須在每個環境中從JavaScript中進行導航,並在彼此之間的每個不同窗口中從腳本發送消息。

好的,那麼當他們沒有對window的共享引用時,我們如何在不同的窗口(但相同的域)中獲取腳本進行通信?

  1. 老派的方式,寫值document.cookie,他們將是可見的在同一個域中的其他窗口的腳本。需要一些惱人的協議開銷來輪詢Cookie更改,確認收到/刪除以及編碼長消息(因爲Cookie長度有限)。

  2. 使用localStorage取代可用的cookie的同一件事的稍微更好的版本 - 避免污染cookie標頭並增加可以放入單個消息的數據長度。

  3. 現代的方式 - 創建一個SharedWorker並從每個窗口與它溝通。不幸的是limited目前的可用性。

如果需要,您當然可以從(3)到(2)回退到(1)。

+0

感謝您的建議。很遺憾,沒有辦法獲得對其他窗口的引用,從而可以將消息發送給他們。我感覺Chrome正在運行一些「保姆狀態」;-) –