3

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

4

1 回答 1

1

我错了!HTML5 周刊刚刚问世,并包含了一篇文章的链接,该文章解决了这个确切的问题

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

有一个演示(并排在几个窗口中打开,这非常令人兴奋),代码非常易读,但核心机制如下:

广播事件

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

监听事件

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

被这个吓坏了。我将不得不以某种方式自己实现这一点。

于 2013-03-13T13:34:56.377 回答