jQuery unterstützt kein Postmessage-Ereignis?

Lesezeit: 1 Minute

Benutzer-Avatar
Stefan

Wenn ich den jQuery-Ereignis-Listener verwende, um das Nachrichtenereignis zu verarbeiten, wie unten:

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

Daten sind undefiniert! 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?

Benutzer-Avatar
Frédéric Hamidi

jQuery verarbeitet möglicherweise die Ereignisse vor data Eigenschaft, und dieser Vorgang unterstützt möglicherweise nicht richtig die message Ereignis (noch).

Versuchen Sie es mit der originalEvent Eigenschaft zum Abrufen Ihrer Daten:

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

  • A +1 für dich, das hat mir gerade geholfen, damit aufzuhören, mir die Haare auszureißen.

    – ceejayoz

    9. August 2013 um 21:35 Uhr

  • Was ist der beste Weg, um auch “onmessage” im IE zu behandeln?

    – grimmig

    5. März 2014 um 11:32 Uhr

  • @grim, IE hat Probleme bei der Unterstützung von postMessage(). Sehen developer.mozilla.org/en-US/docs/Web/API/… und Ist Cross-Origin-PostMessage in IE10 defekt?.

    – Frédéric Hamidi

    5. März 2014 um 11:39 Uhr

  • +1 – eine Lösung, nach der ich gesucht habe. dennoch konnte ich das Ereignis nicht mit aufheben $(window).off("message"). auf der anderen Seite, $(window).bind / $(window).unbind für mich erfolgreich ein Handler an den angehängt/abgetrennt message Veranstaltung.

    – Vitali Climenco

    17. Dezember 2015 um 13:25 Uhr

Einige Browser verwenden das Ereignis „onmessage“. Ich schlage eine kleine Verbesserung der vorherigen Antwort vor, um die Kompatibilität zu erhöhen:

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

1297740cookie-checkjQuery unterstützt kein Postmessage-Ereignis?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy