2012-10-26 104 views
3

我正在編寫一個需要打開多個選項卡/ Web頁面的Web應用程序。我希望他們相互交談。我不想讓頁面與服務器通信。那麼使用HTML5/JS可以嗎?順便說一下,他們都在相同的域名。獲取多個頁面互相交談

+1

我不認爲你的想法是正確的。加載一個頁面,然後除非你完成二級請求。我想你想要什麼就像輪詢一樣,因爲數據是在另一個頁面中輸入的,因此一頁更新。 – ars265

+0

「標籤/網頁」你是指在相同的窗口或瀏覽器標籤? – Cherven

+0

如果Flash是您的選項,您可以使用LocalConnection對象,甚至不需要讓您的服務器涉及跨頁面,甚至跨同一客戶端的跨瀏覽器通信。 – Brad

回答

1

我從來沒有遇到過使用瀏覽器選項卡功能作爲導航方式的web應用程序。我不想說這是錯誤的,因爲我不知道你的特定要求,當然,我沒有玩過世界上的每一個webapp。

但是,在您的Web應用程序中實現您自己的TabBack系統比依賴於可能不一致地實現並可能受用戶個人設置影響的瀏覽器功能更合理嗎?

如果你設置在這條路上,並且離線功能是一個明確的要求,那麼我認爲你唯一的選擇就是使用Flash的LocalConnection功能,就像Brad在評論中所說的那樣。我想你可以創建一個橋樑ExternalInterface將任何數據從Flash傳遞到頁面。 Flash需要做的不是別的,而是編組通信(它可以佔用頁面某處的單個像素)。這與dojotookit使用其閃存存儲的方法類似,旨在爲cookie提供更有效的替代方案。

0

我認爲答案這裏是發生在視圖中的事情,並不需要揭示幕後發生的事情。

您可以使頁面上的DOM元素與頁面上的其他DOM元素進行通信,而無需對服務器進行異步調用,如果這就是您要求的。

如果在..可以說chrome瀏覽器中有兩個選項卡,並且您希望一個DOM元素與完全不同的瀏覽器選項卡上的另一個DOM元素對話。您必須對服務器進行異步調用,以便將其中一個投射回另一個選項卡。但是你不必在視圖中顯示:)(這可以通過Node.JS/Socket.io來完成,例如使用HTML5/JS構建的聊天室)

希望這有助於

+0

我知道這件事...但我正在尋找一些即使我的應用程序處於脫機狀態也能正常工作的東西。其次,我不打算很快設置Node.js。不管怎麼說,多謝拉。 – jnbdz

0

我知道這是一個較舊的帖子,但您可能希望查看本地存儲,甚至是通過javascript設置cookie。

0

有兩種可靠的方法可以使其他選項卡(或跨iframe)中的頁面相互交談。

  1. postMessage API允許頁面發送消息,即使它們位於不同的域中。有一些安全問題需要注意,以避免惡意行爲。你可以在鏈接文章中閱讀。
  2. localStorage and sessionStorage將在發生更改時發送"storage" event。使用此事件時,您可以在數據發生更改時在其他選項卡中通知您。這隻適用於同一個域。因爲這是你所需要的,所以避免任何安全問題可能是更明智的選擇。