Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 帮助浏览器windows会合以获取window.postmessage_Javascript_Html - Fatal编程技术网

Javascript 帮助浏览器windows会合以获取window.postmessage

Javascript 帮助浏览器windows会合以获取window.postmessage,javascript,html,Javascript,Html,我想使用window.postMessage启用两个窗口进行通信。但是这些窗口没有初始连接——一个窗口不是另一个窗口的iframe。有没有办法让这两个窗口“找到”彼此,以便进行通信?一个窗口似乎没有任何方法可以通过“名称”查找另一个窗口。我可以安排两者在同一个域中设置cookie,但无法在cookie中放置对象/指针。我错了!刚出来,包括一个链接到 该技术利用localStorage作为可观察和可修改的资源,由同一域上的所有窗口共享。事实证明,Facebook和谷歌多年来一直在这样做 (在几个窗

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

我错了!刚出来,包括一个链接到

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

(在几个窗口中并排打开,这让人大吃一惊)代码可读性很强,但主要机制如下:

广播一个事件

window.localStorage.setItem('key', value);
倾听事件

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

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

事实证明。它一直就在我们的眼皮底下!是的,我过去也使用过类似的基于cookies的技术。它可以工作,但感觉很笨拙:当我想要的只是两个窗口之间的同步(理想情况下,是无窃听)通信时,被迫设置状态(在我这么做很久之后,其他人可以检查/修改)是有问题的。