2012-03-28 69 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; 
});