当我使用jQuery事件监听器来处理消息事件时,如下所示:
$(window).on('message', function(e) {
var data = e.data; // data = undefined
});
数据未定义!我确定我已将数据传递到当前窗口。因为如果我使用“addEventListener”,一切顺利!
那么,问题是什么?
答案 0 :(得分:104)
jQuery可能正在预处理事件的data
属性,此操作可能无法正确支持message
事件。
尝试使用originalEvent
属性获取数据:
$(window).on("message", function(e) {
var data = e.originalEvent.data; // Should work.
});
答案 1 :(得分:11)
有些浏览器会使用" onmessage"事件。我建议稍微改进之前的答案,以提高兼容性:
$(window).on("message onmessage", function(e) {
var data = e.originalEvent.data;
});