Javascript 帮助浏览器windows会合以获取window.postmessage
我想使用window.postMessage启用两个窗口进行通信。但是这些窗口没有初始连接——一个窗口不是另一个窗口的iframe。有没有办法让这两个窗口“找到”彼此,以便进行通信?一个窗口似乎没有任何方法可以通过“名称”查找另一个窗口。我可以安排两者在同一个域中设置cookie,但无法在cookie中放置对象/指针。我错了!刚出来,包括一个链接到 该技术利用Javascript 帮助浏览器windows会合以获取window.postmessage,javascript,html,Javascript,Html,我想使用window.postMessage启用两个窗口进行通信。但是这些窗口没有初始连接——一个窗口不是另一个窗口的iframe。有没有办法让这两个窗口“找到”彼此,以便进行通信?一个窗口似乎没有任何方法可以通过“名称”查找另一个窗口。我可以安排两者在同一个域中设置cookie,但无法在cookie中放置对象/指针。我错了!刚出来,包括一个链接到 该技术利用localStorage作为可观察和可修改的资源,由同一域上的所有窗口共享。事实证明,Facebook和谷歌多年来一直在这样做 (在几个窗
localStorage
作为可观察和可修改的资源,由同一域上的所有窗口共享。事实证明,Facebook和谷歌多年来一直在这样做
(在几个窗口中并排打开,这让人大吃一惊)代码可读性很强,但主要机制如下:
广播一个事件
window.localStorage.setItem('key', value);
倾听事件
window.addEventListener('storage', function(event){
var message = event.newValue;
}
被这个吹走了。我将不得不以某种方式自己实现这一点。事实证明。它一直就在我们的眼皮底下!是的,我过去也使用过类似的基于cookies的技术。它可以工作,但感觉很笨拙:当我想要的只是两个窗口之间的同步(理想情况下,是无窃听)通信时,被迫设置状态(在我这么做很久之后,其他人可以检查/修改)是有问题的。