如何在2个浏览器选项卡/窗口之间进行通信?

我有一个Web应用程序,它在新的浏览器窗口/选项卡中作为第二个Web应用程序启动。 我想在用户在第二页上提交输入时更新原始页面上的内容。

真实世界示例:Google在GMail中使用此行为。 在撰写新邮件时,如果单击“收件人”链接,则会在新的浏览器窗口中显示联系人列表。 这使原始撰写电子邮件窗口保持打开状态并激活输入,同时用户可以随时从联系人列表中选择电子邮件收件人。 当他们提交该窗口时,所选的电子邮件地址将添加到原始撰写窗口中的收件人列表中。

这是如何完成的? 我想可以使用AJAX完成,但理想情况下,该解决方案将避免通过服务器路由它所需的往返/编程逻辑。

作为参考,我的技术堆栈是一个ASP.NET MVC应用程序,它启动了第二个包含Silverlight应用程序的ASP.NET MVC应用程序。 两个应用程序都可以/确实使用jQuery。

谢谢你的帮助。

我不认为你的意思是两个标签。 Gmail正在做的是在弹出窗口和父窗口之间进行通信。

所以假设您使用javascript打开了一个新窗口。 在打开的窗口中,您可以:

opener.someFunction()将数据传回。 让我找一个可靠的例子并粘贴它。

编辑:这是一个很好的例子。 http://www.javascriptkit.com/javatutors/remote2.shtml

你可以使用开场白做很多事情。

你有两种可能性:

  1. 常量轮询( setInterval和AJAX)
  2. Push( Comet和HTML 5 WebSocket API )