我想知道在以下情况下如何在js之间实现正确的通信方式(最好使用postMessage):
P A R E N T | | CHILD1 CHILD2
父级是origin1,两个子级都在origin2中(实际上是两个不同模式下的同一个网站)。
如何向准确的孩子发送消息,避免第二个孩子做出反应。
提前致谢
答案 0 :(得分:0)
假设您打开了两个弹出窗口:
/*
* 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');
在弹出窗口中,您需要添加一个侦听器代码:
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);
这里的问题是两个弹出窗口都需要与父窗口属于同一个域。