以下のように、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;
});