Javascript跨域PostMessage不工作



我有一个页面,打开一个子窗口(有iframe),从新的页面我调用父函数传递一些值从子到父窗口。子窗口代码:

 window.opener.ParentFunction(sendvalues);

因为两者都在同一个域(example.com),它对我来说工作得很好。现在,由于一些变化,我需要将我的子窗口移动到一个新的域(new.example.com)。

为了解决这个问题,我使用PostMessage.

子窗口代码:

window.parent.postMessage(sendvalues,"*");
父代码:

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];    
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

eventer(messageEvent, function (e) {
//for debug    
alert(e.data);
ParentFunction(e.data);
}, false);

这不是为我工作,我没有得到任何价值。没有错误,什么都没有发生。代码没有在eventer方法中执行。我没有收到任何警告。

根据新的信息,你应该打电话:

如果子元素和iframe在同一域中

window.parent.opener.postMessage

如果父节点和子节点在同一域中而iframe不在,iframe可能需要调用

window.parent.postMessage

,然后,子窗口应该侦听并使用

将消息传递给父窗口
window.opener.postMessage

虽然,在这种情况下,您仍然可以尝试window.parent.opener.postMessage -我不打算为您测试所有内容;)

相关内容

  • 没有找到相关文章

最新更新