我有这个代码,我已将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对象通常仅在您想要模拟时才有用接收页面接收外部消息)