2010-11-12 68 views
7

我有一個Web應用程序在新瀏覽器窗口/選項卡中作爲第二個Web應用程序啓動。當用戶在第二頁上提交他們的輸入時,我想更新原始頁面上的內容。如何在2個瀏覽器標籤頁/窗口之間進行通信?

真實世界範例: Google在Gmail中使用此行爲。如果您點擊「收件人」鏈接撰寫新郵件,則會在新的瀏覽器窗口中顯示您的聯繫人列表。這會使原始撰寫電子郵件窗口保持打開並處於活動狀態,以供用戶隨時從聯繫人列表中選擇電子郵件收件人。當他們提交該窗口時,所選電子郵件地址將添加到原始撰寫窗口中的收件人列表中。

這是如何完成的?我想可以使用AJAX來完成,但理想情況下,解決方案將避免通過服務器路由它所需的往返/編程邏輯。

作爲參考,我的技術堆棧是一個ASP.NET MVC應用程序啓動第二個包含Silverlight應用程序的ASP.NET MVC應用程序。這兩個應用程序都可以使用jQuery。

感謝您的幫助。

回答

9

我不認爲你的意思是兩個選項卡。 Gmail正在做的是在彈出窗口和父窗口之間進行通信。

因此,假設您使用javascript打開了一個新窗口。在打開的窗口中,您可以執行:

opener.someFunction()將數據傳回。讓我找到一個堅實的例子並粘貼它。

編輯:這是一個很好的exmample。 http://www.javascriptkit.com/javatutors/remote2.shtml

你可以使用opener做很多事情。

+0

這看起來像什麼,我想用。我在鏈接中嘗試了簡單的測試。適用於Firefox和IE,但在Chrome中失敗。父窗口的顏色從不更新。任何想法爲什麼? – Justin 2010-11-12 19:35:25

+0

@Amir:如果JavaScriptKit網站出現故障,您可能希望將示例粘貼到此處,也可能在代碼段中。 – 2015-07-11 02:46:48

+0

此解決方案是否能夠在經過身份驗證的網站中利用相同的會話? – 2015-08-11 16:01:59

-1

你有兩種可能性:

  1. 恆輪詢(setInterval和AJAX)
  2. 推送(CometHTML 5 WebSocket API
+0

eeh輪詢標籤可能但不是打開一個新窗口。 :) – 2010-11-12 18:48:58

相關問題