当我使用jQuery的事件监听器来处理消息事件时,如下所示:
$(window).on('message', function(e) {
var data = e.data; // data = undefined
});
数据未定义!我确定已经将数据传递给了当前窗口。因为如果我使用"addEventListener",一切都很顺利!
那么问题出在哪里?
当我使用jQuery的事件监听器来处理消息事件时,如下所示:
$(window).on('message', function(e) {
var data = e.data; // data = undefined
});
数据未定义!我确定已经将数据传递给了当前窗口。因为如果我使用"addEventListener",一切都很顺利!
那么问题出在哪里?
可能是 jQuery 对事件的 data
属性进行了预处理,而该操作可能尚不支持 message
事件。
尝试使用 originalEvent
属性来获取您的数据:
$(window).on("message", function(e) {
var data = e.originalEvent.data; // Should work.
});
一些浏览器使用“onmessage”事件。我建议对先前的答案进行一点改进,以增加兼容性:
$(window).on("message onmessage", function(e) {
var data = e.originalEvent.data;
});
postMessage()
方面存在问题。请参见https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage#Browser_compatibility和[Is cross-origin postMessage broken in IE10?](https://dev59.com/kmQo5IYBdhLWcg3wOdJa)。 - Frédéric Hamidi$(window).off("message")
解除事件绑定。另一方面,$(window).bind / $(window).unbind
成功地为我附加/分离了一个处理程序到message
事件。 - Vitali Climenco