web-dev-qa-db-ja.com

jQueryはポストメッセージイベントをサポートしていませんか?

以下のように、jQueryイベントリスナーを使用してメッセージイベントを処理する場合:

$(window).on('message', function(e) {
    var data = e.data; // data = undefined
});

データは未定義です!現在のウィンドウにデータを渡したと確信しています。 「addEventListener」を使用すると、すべてがうまくいくからです!

だから問題は何ですか?

62
stefan

jQueryはイベントのdataプロパティを前処理している可能性があり、この操作は(まだ)messageイベントを適切にサポートしていない可能性があります。

originalEventプロパティを使用してデータを取得してみてください。

$(window).on("message", function(e) {
    var data = e.originalEvent.data;  // Should work.
});
106

一部のブラウザは「onmessage」イベントを使用します。互換性を高めるために、以前の回答を少し改善することをお勧めします。

$(window).on("message onmessage", function(e) {
    var data = e.originalEvent.data;
});
11
Tibor