我想使两个窗口使用window.postMessage进行通信。但是这些窗口没有初始连接——一个不是另一个的iframe。有没有什么方法可以让这两个窗口"找到"对方,从而进行通信?一个窗口似乎没有办法通过"名称"来查找另一个窗口。我可以安排两者在同一域中设置cookie,但无法在cookie中放置对象/指针。
我错了!HTML5周刊刚刚出版,其中包含了一篇解决这个问题的文章的链接。
该技术利用localStorage
作为同一域中所有窗口共享的可观察和可修改的资源。事实证明,Facebook和谷歌多年来一直在这样做!
有一个非常可读的代码演示(同时在几个窗口中打开它,它非常令人兴奋),但核心机制如下:
广播事件
window.localStorage.setItem('key', value);
监听事件
window.addEventListener('storage', function(event){
var message = event.newValue;
}
被这个震撼了。我需要自己实现这个