2017-10-11 95 views
0

我打开一个弹出式窗口:比较窗口对象

a = window.open('//example.com'); 

从这个窗口,我发送邮件里面:

window.opener.postMessage('test', '*'); 

并与接受它:

window.addEventListener('message', e => b = e.source); 

因为这会触发任何发送到窗口的消息,所以我想使if(a == b)来验证消息来自窗口a。可悲的是,这总是会返回false。有关于此的任何想法?

+0

是您的源代码是否行到? postMessage需要多一个参数才能运行。 – songxunzhao

+0

@songxunzhao你说得对,我忘了。但那不是重点。 –

+1

它适用于我的示例,请检查此链接https://plnkr.co/edit/q1bfQwWJlsx8eQbGSqEA?p=preview – songxunzhao

回答

0

您可以检查eventevent.source.origin

if (event.source.origin === location.protocol + "//example.com" 
    && event.origin === location.protocol + "//example.com") { 
    // do stuff 
} 
+0

我知道,但是这个域上有几个应用程序将消息发送到我的窗口。所以这没有帮助。 –

+0

@ I'mLu不确定你的意思?您也可以将打开的“window”的'.name'属性设置为一个唯一值,并将该属性值发布到'.opener' – guest271314