我有一个页面可以打开子窗口(具有iframe),并且从新页面开始,我要调用Parent函数将一些值从Child传递到父窗口。
子窗口代码:

 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-我不会为您测试所有内容;)

07-24 09:44
查看更多