让多个页面互相交谈

时间:2012-10-26 20:19:25

标签: javascript html5 browser

我正在编写一个需要打开多个标签/网页的Web应用程序。我希望他们能够互相交谈。我不希望页面与服务器通信。那HTML5 / JS有可能吗?顺便说一句,他们都在同一个域名。

4 个答案:

答案 0 :(得分:1)

我从未遇到过使用浏览器标签功能作为导航方式的网络应用程序。我不想说这是错的,因为我不知道你的特殊要求,当然,我没有玩过世界上每一个webapp。

但是,在您的网络应用程序中实现自己的标签系统比依赖浏览器的功能更加有意义,浏览器的功能可能不一致且可能受用户个人设置的影响?

如果您已设置此路径,并且离线功能是明确的要求,那么我认为您唯一的选择是使用Flash的LocalConnection功能,正如Brad在评论中所建议的那样。我想你可以用ExternalInterface创建一个桥梁,将任何数据从Flash传递到页面。 Flash除了编组通信之外别无其他功能(它可能会在页面的某个位置占用一个像素)。这与dojotookit采用闪存存储的方法类似,旨在提供更强大的Cookie替代方案。

答案 1 :(得分:0)

我认为这里的答案是视图中发生的事情,不必揭示幕后发生的事情。

您可以使页面上的DOM元素与页面上的其他DOM元素进行通信,而不会对服务器进行异步调用(如果这就是您要求的内容)。

如果你有两个标签..让我们说Chrome浏览器,你想要一个DOM元素与完全不同的浏览器标签上的另一个DOM元素交谈。您必须对服务器进行异步调用,然后将其中一个回到另一个选项卡。但是您不必在视图中显示这种情况:)(这可以通过Node.JS / Socket.io来完成,一个例子是使用HTML5 / JS构建的聊天室)

希望这有帮助

答案 2 :(得分:0)

我知道这是一篇较旧的帖子,但您可能希望查看本地存储空间,甚至是通过javascript设置的Cookie。

答案 3 :(得分:0)

有两种可靠的方法可以让其他标签页(或iframe中的页面)互相交谈。

  1. postMessage API允许网页发送消息,即使它们位于不同的域中。为避免恶意行为,需要注意一些安全问题。您可以在链接文章中阅读相关内容。
  2. localStorage and sessionStorage会在更改后发送"storage" event。使用此事件,您可以在数据更改时在其他选项卡中收到通知。这仅适用于同一域。因为这就是您所需要的,所以可能是避免任何安全问题的更明智的选择。