Javascript Cross Domain PostMessage无效

时间:2016-08-26 03:36:07

标签: javascript cross-domain postmessage

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

 window.opener.ParentFunction(sendvalues);

由于两者都在同一个域(example.com),因此对我来说工作正常。 现在因为一些变化,我需要将我的子窗口移动到一个新域(new.example.com)。我也没有得到Premission denied错误。

为了解决这个问题,我正在使用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方法中执行。我没有得到任何警报。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

根据新信息,您应该致电:

  

如果子级和iframe位于同一个域中

window.parent.opener.postMessage
  

如果父级和子级位于同一个域且iframe不在,则iframe可能需要调用

window.parent.postMessage
  

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

将消息传递给父级
window.opener.postMessage

虽然,在这种情况下你仍然可以尝试使用window.parent.opener.postMessage - 我不打算为你测试一切;)