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