如何在浏览器标签/窗口之间进行通信?

时间:2014-10-01 11:51:51

标签: javascript html5 cookies

我正在建立聊天应用程序。要打开聊天用户点击按钮,请打开iframe聊天。在这个妈妈,我在主窗口中使用user_id设置cookie。在iframe的聊天应用程序中,我有回调的timmer,检查是否设置了cookie。如果设置了cookie,则应用程序通过user_id打开与用户的新聊天并删除co​​okie。效果很好。

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

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

1 个答案:

答案 0 :(得分:3)

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; }
}