我有一个页面,打开一个子窗口(有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 -我不打算为您测试所有内容;)