【问题标题】:Compare window-objects比较窗口对象
【发布时间】:2017-10-11 15:18:19
【问题描述】:

我打开一个弹出窗口:

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

在这个窗口中我发送一条消息:

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

并通过以下方式接收:

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

因为这会触发发送到窗口的 任何 消息,所以我想制作类似 if(a == b) 的内容来验证消息是否来自窗口 a。可悲的是,这总是返回false。有什么想法吗?

【问题讨论】:

  • 您的源代码工作正常吗? postMessage 需要多一个参数才能运行。
  • @songxunzhao 你说得对,我忘了。但这不是重点。
  • 它适用于我的示例,请查看此链接plnkr.co/edit/q1bfQwWJlsx8eQbGSqEA?p=preview
  • @songxunzhao 嗯,这很奇怪。将在我的环境中再次检查。感谢您指出。

标签: javascript window popupwindow postmessage


【解决方案1】:

您可以查看eventevent.source中的.origin

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

【讨论】:

  • 我知道,但是这个域上有几个应用程序向我的窗口发送消息。所以这没有帮助。
  • @I'mLu 不确定您的意思?您也可以将打开的window.name 属性设置为唯一值并将该属性值发布到.opener
猜你喜欢
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 2014-04-26
相关资源
最近更新 更多