2012-10-26 72 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。使用此事件时,您可以在数据发生更改时在其他选项卡中通知您。这只适用于同一个域。因为这是你所需要的,所以避免任何安全问题可能是更明智的选择。