我有一个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
始终是null
而event.orign and event.source
是undefined
。我该如何解决这个问题?
答案 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”)中存在问题 什么时候会更新。