2012-03-28 10 views
58

以下のように私は、メッセージイベントを処理するためにjQueryのイベントリスナーを使用します。jQueryはポストメッセージイベントをサポートしていませんか?

$(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

+2

+1あなたのために、これはちょうど私の髪を引き出すのを止めるのを助けた。 – ceejayoz

+1

IEの "onmessage"も扱う最良の方法は何ですか? – grim

11

一部のブラウザでは、 "onMessageの" イベントを使用します。互換性を高めるために、これまでの回答に少し改良を加えることをお勧めします。

$(window).on("message onmessage", function(e) { 
    var data = e.originalEvent.data; 
}); 
関連する問題