我有一个打开子窗口(有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方法中执行。我没有得到任何警报。
非常感谢任何帮助。
答案 0 :(得分:1)
根据新信息,您应该致电:
如果子级和iframe位于同一个域中
window.parent.opener.postMessage
如果父级和子级位于同一个域且iframe不在,则iframe可能需要调用
window.parent.postMessage
然后,子窗口应该监听并使用
将消息传递给父级
window.opener.postMessage
虽然,在这种情况下你仍然可以尝试使用window.parent.opener.postMessage - 我不打算为你测试一切;)