2012-03-28 9 views
58

Gdy używam jQuery zdarzeń słuchacza do obsługi zdarzenia wiadomość, jak poniżej:jQuery nie obsługuje zdarzenia postmessage?

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

danych jest niezdefiniowana! Jestem pewien, że przekazałem dane do bieżącego okna. Ponieważ jeśli użyję "addEventListener", wszystko pójdzie dobrze!

Jaki jest problem?

Odpowiedz

98

jQuery może wstępnie przetworzyć właściwość zdarzenia data, a ta operacja może nie obsługiwać poprawnie zdarzenia message (jeszcze).

Spróbuj użyć właściwość originalEvent pobrać swoje dane:

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

To bardzo pomocne, dziękuję bardzo. – stefan

+2

+1 dla ciebie, to pomogło mi przestać wyrywać włosy. – ceejayoz

+1

Jaki jest najlepszy sposób obsługi "komunikatu" w IE? – grim

11

Niektóre przeglądarki użyć "onmessage" zdarzenie. Sugeruję niewielką poprawę poprzedniej odpowiedzi w celu zwiększenia kompatybilności:

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