2010-11-12 61 views
7

Tôi có ứng dụng web khởi chạy dưới dạng ứng dụng web thứ hai trong cửa sổ/tab trình duyệt mới. Tôi muốn cập nhật nội dung trên trang gốc khi người dùng gửi dữ liệu nhập của họ trên trang thứ hai.Làm thế nào để bạn giao tiếp giữa 2 tab/cửa sổ trình duyệt?

Ví dụ thế giới thực: Google sử dụng hành vi này trong Gmail. Khi soạn thư mới nếu bạn nhấp vào liên kết "Tới", nó sẽ hiển thị danh sách liên hệ của bạn trong cửa sổ trình duyệt mới. Thao tác này sẽ để cửa sổ soạn thư gốc mở và hoạt động cho đầu vào trong khi người dùng có thể chọn bất kỳ người nhận email nào từ danh sách liên hệ. Khi họ gửi cửa sổ đó, các địa chỉ email được chọn sẽ được thêm vào danh sách người nhận trong cửa sổ soạn thư gốc.

Điều này được thực hiện như thế nào? Tôi tưởng tượng nó có thể được thực hiện bằng cách sử dụng AJAX nhưng lý tưởng là giải pháp sẽ tránh được các chuyến đi vòng/lập trình logic cần thiết để định tuyến nó thông qua máy chủ.

Để tham khảo ngăn xếp công nghệ của tôi cho đây là một ứng dụng ASP.NET MVC khởi chạy ứng dụng ASP.NET MVC thứ hai có chứa ứng dụng Silverlight. Cả hai ứng dụng đều có thể làm/sử dụng jQuery.

Cảm ơn sự giúp đỡ của bạn.

Trả lời

9

Tôi không nghĩ bạn có nghĩa là hai tab. Những gì Gmail đang làm là liên lạc giữa cửa sổ bật lên và cha mẹ.

Vì vậy, giả sử bạn đã mở một cửa sổ mới bằng javascript. Trong cửa sổ đã mở, bạn có thể làm:

opener.someFunction() để chuyển lại dữ liệu. Hãy để tôi tìm một ví dụ vững chắc và dán nó.

Chỉnh sửa: Đây là ví dụ tốt. http://www.javascriptkit.com/javatutors/remote2.shtml

Bạn có thể sử dụng công cụ mở để thực hiện rất nhiều.

+0

này trông giống như những gì tôi muốn sử dụng. Tôi đã thử các bài kiểm tra đơn giản trong liên kết của bạn. Hoạt động hoàn hảo cho Firefox và IE nhưng không hoạt động trong Chrome. Màu của cửa sổ mẹ không bao giờ được cập nhật. Bất kỳ ý tưởng tại sao? – Justin

+0

@Amir: bạn có thể dán ví dụ ở đây, có thể trong đoạn mã, trong trường hợp trang web JavaScriptKit bị hỏng. –

+0

Giải pháp này có thể tận dụng cùng một phiên trong một trang web được xác thực không? –

-1

Bạn có hai khả năng:

  1. bỏ phiếu Constant (setInterval và AJAX)
  2. Đẩy (CometHTML 5 WebSocket API)
+0

eeh bỏ phiếu cho các tab có thể nhưng không phải để mở một cửa sổ mới. :) –

Các vấn đề liên quan