Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 postmessage具有相同原点的两个子窗口_Javascript - Fatal编程技术网

Javascript postmessage具有相同原点的两个子窗口

Javascript postmessage具有相同原点的两个子窗口,javascript,Javascript,我想知道在以下情况下,如何在windows之间以js(最好使用postMessage)实现适当的通信方式: p A R E N T | | 孩子1孩子2 父母是原创的,两个孩子都是原创的(事实上,同一个网站有两种不同的模式) 如何将消息发送给准确的孩子,避免第二个孩子做出反应 提前感谢假设您正在打开两个弹出窗口: /* * In window A's scripts, with A being on <http://example.com:8080>: */ var

我想知道在以下情况下,如何在windows之间以js(最好使用postMessage)实现适当的通信方式:

p A R E N T | | 孩子1孩子2

父母是原创的,两个孩子都是原创的(事实上,同一个网站有两种不同的模式)

如何将消息发送给准确的孩子,避免第二个孩子做出反应


提前感谢

假设您正在打开两个弹出窗口:

/*
 * In window A's scripts, with A being on <http://example.com:8080>:
 */

var popup1 = window.open(...popup details...),
    popup2 = window.open(...popup details...);

popup1.postMessage('some message to popup 1', 'http://example.org');
popup2.postMessage('some message to popup 2', 'http://example.org');

这里需要注意的是,两个弹出窗口都需要与父窗口属于同一个域。

Hi,实际上我对弹出窗口使用jQuery窗口扩展,但机制应该相同。我试着按照你建议的方式发布消息,但第一个窗口总是能捕捉到消息。所以当执行以下操作时:popup2.postMessage-popup1获取并处理消息
function receiveMessage(event)
{
  // Do we trust the sender of this message?  (might be
  // different from what we originally opened, for example).
  if (event.origin !== "http://example.org")
    return;

  // event.source is popup
  // event.data is "some message to popup 1"
}
window.addEventListener("message", receiveMessage, false);