2012-03-28 9 views
58

Wenn ich jQuery Ereignis-Listener verwenden Nachricht Ereignis zu behandeln, wie unten:jQuery unterstützt das Ereignis postmessage nicht?

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

Daten ist nicht definiert! Ich bin mir sicher, dass ich Daten an das aktuelle Fenster übergeben habe. Denn wenn ich "addEventListener" verwende, geht alles gut!

Also, was ist das Problem?

Antwort

98

jQuery könnte die data -Eigenschaft des Ereignisses vorverarbeiten, und dieser Vorgang unterstützt das Ereignis message möglicherweise (noch) nicht richtig.

Versuchen Sie, die originalEvent Eigenschaft verwenden Ihre Daten abzurufen:

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

Es ist hilfreich, vielen Dank. – stefan

+2

Ein +1 für dich, das hat mir nur geholfen, aufzuhören, mir die Haare auszuziehen. – ceejayoz

+1

Was ist der beste Weg, um auch "onmessage" in IE zu behandeln? – grim

11

Einige Browser die "onmessage" Ereignis verwenden. Ich empfehle eine kleine Verbesserung der vorherigen Antwort für erhöhte Kompatibilität:

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