我正在构建聊天应用程序。要打开聊天,用户单击按钮并打开带有聊天的 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/