我正在编写一个需要打开多个选项卡/网页的 Web 应用程序。我希望他们互相交谈。而且我不希望页面与服务器对话。那么 HTML5/JS 有可能吗?顺便说一句,它们都在同一个域名上。
4 回答
我从来没有遇到过使用浏览器选项卡功能作为导航方式的 web 应用程序。我不想说这是错误的,因为我不知道您的特殊要求,当然,我还没有玩过世界上的每一个 webapp。
但是,在您的 Web 应用程序中实现自己的选项卡系统是否比依赖浏览器的功能更有意义,该功能可能实现不一致并且可能受用户个人设置的影响?
如果您设置在此路径上,并且离线功能是一个明确的要求,那么我认为您唯一的选择是使用 Flash 的LocalConnection功能,正如 Brad 在评论中所建议的那样。我想你可以用ExternalInterface创建一个桥来将任何数据从 Flash 传递到页面。Flash 只需要编组通信(它可以在页面的某处占据一个像素),不需要做任何其他事情。这与dojotokit采用闪存存储的方法类似,旨在为 cookie 提供更强大的替代方案。
我认为这里的答案是视图中发生的事情,不必揭示幕后发生的事情。
您可以使页面上的 DOM 元素与页面上的其他 DOM 元素进行通信,而无需对服务器进行异步调用(如果这就是您所要求的)。
如果您在.. 中有两个选项卡,比如说 chrome 浏览器,并且您希望一个 DOM 元素与另一个完全不同的浏览器选项卡上的 DOM 元素对话。您必须对服务器进行异步调用,这会将一个返回到另一个选项卡。但是您不必在视图中显示发生的情况 :)(这可以使用 Node.JS/Socket.io 来完成,例如使用 HTML5/JS 构建的聊天室)
希望这可以帮助
我知道这是一篇较旧的帖子,但您可能想查看本地存储,甚至是通过 javascript 设置的 cookie。
有 2 种可靠的方法可以让其他选项卡(或跨 iframe)中的页面相互通信。
- postMessage API 允许页面发送消息,即使它们位于不同的域中。为了避免恶意行为,需要注意一些安全问题。您可以在链接的文章中阅读相关内容。
- localStorage 和 sessionStorage将在更改时发送一个“存储”事件。使用此事件,您可以在数据更改时在其他选项卡中收到通知。这仅适用于同一域。因为这就是您所需要的,所以避免任何安全问题可能是更明智的选择。