2012-03-28 76 views
58

当我使用jQuery事件监听器来处理消息事件,如下图所示:jQuery不支持postmessage事件?

$(window).on('message', function(e) { 
    var data = e.data; // data = undefined 
}); 

数据是不确定的!我确信我已将数据传递到当前窗口。因为如果我使用“addEventListener”,一切顺利!

那么,什么问题?

回答

98

jQuery可能会预处理事件的data属性,并且此操作可能无法正确支持message事件(还)。

尝试使用originalEvent属性读取数据:

$(window).on("message", function(e) { 
    var data = e.originalEvent.data; // Should work. 
}); 
+0

这很有帮助,非常感谢。 – stefan 2012-03-29 05:52:23

+2

为你+1,这只是帮助我停止拉我的头发。 – ceejayoz 2013-08-09 21:35:47

+1

在IE中处理“onmessage”的最好方法是什么? – grim 2014-03-05 11:32:36

11

有些浏览器使用 “的onMessage” 事件。我建议稍微改进以前的答案以提高兼容性:

$(window).on("message onmessage", function(e) { 
    var data = e.originalEvent.data; 
});