jQuery doesn't support postmessage event?

28,032

Solution 1

jQuery might be preprocessing the event's data property, and this operation may not properly support the message event (yet).

Try using the originalEvent property to fetch your data:

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

Solution 2

Some browsers use the "onmessage" event. I suggest a little improvement to the previous answer for increased compatibility:

$(window).on("message onmessage", function(e) {
    var data = e.originalEvent.data;
});
Share:
28,032
stefan
Author by

stefan

Updated on October 03, 2020

Comments

  • stefan
    stefan over 3 years

    When I use jQuery event listener to handle message event, like below:

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

    data is undefined! I'm sure that I have passed data to current window. Because if I use "addEventListener", everything goes well!

    So, what's the problem?

  • ceejayoz
    ceejayoz over 10 years
    A +1 for you, this just helped me stop pulling my hair out.
  • grim
    grim about 10 years
    What is the best way to also handle "onmessage" in IE?
  • Frédéric Hamidi
    Frédéric Hamidi about 10 years
    @grim, IE has problems in its support for postMessage(). See developer.mozilla.org/en-US/docs/Web/API/… and Is cross-origin postMessage broken in IE10?.
  • Jezer
    Jezer over 8 years
    +1 - a solution I was looking for. yet I could not unbind the event using $(window).off("message"). on the other hand, $(window).bind / $(window).unbind successfully attached / detached for me a handler to the message event.