javascript – postMessage()和dispatchEvent()在原始策略方面有什么区别?

我有这个代码,我已将MessageEvent的原点设置为*,但仍然控制台提示阻止具有原点“AAAA”的帧访问具有原点“BBBB”的帧.协议,域和端口必须匹配.谁知道为什么?

  var size = {
    width:  document.body.scrollWidth,
    height:  document.body.scrollHeight
  }
  var evt = new MessageEvent("dimensionMessage",{
      "data": size,
      "origin":"*"
  });
  window.parent.dispatchEvent(evt);

但是,如果我使用window.parent.postMessage(size,“*”),它可以工作.

解决方法:

错误消息告诉您,如果一个方法位于不同的原点,则它通常不能从父级调用方法;包括dispatchEvent方法(否则,iframe可以在父页面中生成鼠标事件).

postMessage API是一个例外,它精确地设计为允许以明确定义的方式进行跨源通信.

(将原点设置为’*’对您没有帮助;通常,当通过postMessage发送消息时,该属性应由浏览器设置;手动创建MessageEvent对象通常仅在您想要模拟时才有用接收页面接收外部消息)

上一篇:UE4全局暂停(Set Game Paused)时控制相机移动的方法


下一篇:php – 如果在Joomla中发生任何错误,则调度事件