jQuery не поддерживает событие postmessage? - PullRequest
62 голосов
/ 28 марта 2012

Когда я использую обработчик событий jQuery для обработки события сообщения, как показано ниже:

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

данные не определены!Я уверен, что я передал данные в текущее окно.Потому что, если я использую "addEventListener", все идет хорошо!

Итак, в чем проблема?

Ответы [ 2 ]

106 голосов
/ 28 марта 2012

jQuery может предварительно обрабатывать свойство data события, и эта операция может не поддерживать должным образом событие message (пока).

Попробуйте использовать свойство originalEvent для получения ваших данных:

$(window).on("message", function(e) {
    var data = e.originalEvent.data;  // Should work.
});
11 голосов
/ 14 сентября 2014

Некоторые браузеры используют событие "onmessage". Я предлагаю немного улучшить предыдущий ответ для повышения совместимости:

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