javascript - window.postmessage - event.data始终为null

时间:2013-06-19 11:55:19

标签: javascript firefox iframe postmessage

我有一个iframe,想要将数据从iframe发送到父窗口。

在iframe的js代码中,我有以下语句

window.parent.postMessage('hello', '*');

父窗口中相应的消息处理程序如下

$(window).bind('message', function (event) {
    console.log(event.data);
    console.log(event.origin);
    console.log(event.source);
    console.log('received');
});

我从localhost加载代码,iframe源也从localhost加载。 我在firefox 21中运行代码。

问题是event.data始终是nullevent.orign and event.sourceundefined。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

请参阅Frédéric Hamidi answer。发生了什么是jQuery将原始事件封装在正确的jQuery.event对象类型中。因此,要获得原始事件,您只需:

$(window).on("message", function(e) {
  console.log("Orignal:", e.originalEvent);
});

答案 1 :(得分:6)

window.parent.postMessage('hello', '*');   
window.addEventListener("message", receiveMessage, false);
       function receiveMessage (event) {
            console.log(event.data);
            console.log(event.origin);
            console.log(event.source);
            console.log('received');
        }

这将按预期工作; 也许在使用jQuery的事件绑定(“message”)中存在问题 什么时候会更新。