帮助浏览器窗口集合window.postmessage

Helping browser windows rendezvous for window.postmessage

本文关键字:window postmessage 集合 窗口 浏览器 帮助      更新时间:2023-09-26

我想使两个窗口使用window.postMessage进行通信。但是这些窗口没有初始连接——一个不是另一个的iframe。有没有什么方法可以让这两个窗口"找到"对方,从而进行通信?一个窗口似乎没有办法通过"名称"来查找另一个窗口。我可以安排两者在同一域中设置cookie,但无法在cookie中放置对象/指针。

我错了!HTML5周刊刚刚出版,其中包含了一篇解决这个问题的文章的链接。

该技术利用localStorage作为同一域中所有窗口共享的可观察和可修改的资源。事实证明,Facebook和谷歌多年来一直在这样做!

有一个非常可读的代码演示(同时在几个窗口中打开它,它非常令人兴奋),但核心机制如下:

广播事件

window.localStorage.setItem('key', value);

监听事件

window.addEventListener('storage', function(event){
    var message = event.newValue;
}

被这个震撼了。我需要自己实现这个