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

标签 javascript html cookies

我正在构建聊天应用程序。要打开聊天,用户单击按钮并打开带有聊天的 iframe。此时我在主窗口中使用 user_id 设置 cookie。在 iframe 中的聊天应用程序中,我有带有回调的定时器,用于检查 cookie 是否已设置。如果设置了 cookie,则应用程序将通过 user_id 打开与用户的新聊天并删除 cookie。效果很好。

但是,当用户打开 2 个或更多选项卡时,应用程序仅在一个选项卡中打开聊天,因为该选项卡中的 cookie 已被删除。我可以延迟删除 cookie,但我没有那样做。

如何找到这个问题的解决方案?

最佳答案

HTML5 LocalStorage (及其关联事件storage)对于同一域的浏览器窗口之间的通信非常有用。但请注意,IE 和 Chrome 等浏览器会以不同的方式触发该事件。特别是,Chrome 仅在存储被不同窗口更改时才会触发该事件,而 IE 无论如何都会在每次更改时触发该事件。

if (window.addEventListener) {
  window.addEventListener("storage", handle_storage, false);
} else {
  window.attachEvent("onstorage", handle_storage);
};

function handle_storage(e) {
  if (!e) { e = window.event; }
}

关于javascript - 如何在浏览器选项卡/窗口之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26140747/

相关文章:

javascript - 将自制库导入到vue项目中

javascript - 在 jquery 验证插件中添加自己的规则

javascript - 如何在谷歌应用程序脚本中获取PDF的制作者

javascript - 如何检查javascript是否被禁用?

javascript - jQuery 队列事件

javascript - 更改 UIWebVIew 中 HTML 元素的位置

javascript - 复选框验证

jquery - 如何使用 jQuery 添加动画弹跳?

http - 在 wireshark 中搜索设置的 cookie 不会显示在浏览器中设置的所有 cookie

javascript - 模态框+复选框+cookie