2012-03-28 12 views
58

Cuando utilizo jQuery detector de eventos para manejar evento de mensaje, como a continuación:jQuery no admite el evento postmensaje?

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

de datos no está definido! Estoy seguro de que he pasado los datos a la ventana actual. Porque si uso "addEventListener", ¡todo va bien!

Entonces, ¿cuál es el problema?

Respuesta

98

jQuery podría estar preprocesando la propiedad data del evento, y esta operación puede no ser compatible con el evento message (todavía).

Trate de usar la propiedad originalEvent a buscar sus datos:

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

Es útil, muchas gracias. – stefan

+2

A +1 para ti, esto me ayudó a dejar de sacarme el pelo. – ceejayoz

+1

¿Cuál es la mejor manera de manejar también "onmessage" en IE? – grim

11

Algunos navegadores utilizan el evento "onmessage". Sugiero una pequeña mejora a la respuesta anterior para una mayor compatibilidad:

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