【发布时间】:2016-08-26 03:36:06
【问题描述】:
我有一个打开子窗口(具有 iframe)的页面,并且从新页面我调用父函数将一些值从子窗口传递到父窗口。 子窗口代码:
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 方法中执行。我没有收到任何警报。
非常感谢任何帮助。
【问题讨论】:
-
我刚刚看到你对
postMessage的使用——你能详细说明一下吗... -
@Jaromanda X..你在寻找什么细节......似乎事件函数的代码根本没有被调用......我没有收到我添加的任何警报。
-
@Jaromanda X :我也需要从父窗口将 PostMessage 发送到弹出窗口吗?在我的情况下,这不是必需的,因为我使用查询字符串传递所有值,但是我想从 Child使用 Postmessage 的值。可以使用“event.source.postMessage”来完成
-
parent.postMessage(obj, window.location.origin);设置域,看看有没有区别。 -
另外,我没看错......有父母,孩子和孩子也有一个iframe? - 并且 iframe 是发往父级的 postMessage 的来源?
标签: javascript cross-domain postmessage