web-dev-qa-db-fra.com

jQuery ne prend pas en charge l'événement post-message?

Lorsque j'utilise l'écouteur d'événement jQuery pour gérer l'événement de message, comme ci-dessous:

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

les données ne sont pas définies! Je suis sûr que j'ai transmis des données à la fenêtre actuelle. Parce que si j'utilise "addEventListener", tout se passe bien!

Donc quel est le problème?

62
stefan

jQuery peut prétraiter la propriété data de l'événement, et cette opération peut ne pas prendre en charge correctement l'événement message (pour l'instant).

Essayez d'utiliser la propriété originalEvent pour récupérer vos données:

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

Certains navigateurs utilisent l'événement "onmessage". Je suggère une petite amélioration à la réponse précédente pour une compatibilité accrue:

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