Web/API/MessagePort/messageerror event

From Get docs


The messageerror event is fired on a MessagePort object when it receives a message that can't be deserialized.

Bubbles No
Cancelable No
Interface MessageEvent
Event handler property onmessageerror

Examples

Suppose a script creates a MessageChannel and sends one of the ports to a different browsing context, such as another <iframe>, using code like this:

const channel = new MessageChannel();
const myPort = channel.port1;
const targetFrame = window.top.frames[1];
const targetOrigin = 'https://example.org';

const messageControl = document.querySelector('#message');
const channelMessageButton = document.querySelector('#channel-message');

channelMessageButton.addEventListener('click', () => {
    myPort.postMessage(messageControl.value);
})

targetFrame.postMessage('init', targetOrigin, [channel.port2]);

The target can receive the port and start listening for messages and message errors on it using code like this:

window.addEventListener('message', (event) => {
    const myPort = event.ports[0];

    myPort.addEventListener('message', (event) => {
        received.textContent = event.data;
    });

    myPort.addEventListener('messageerror', (event) => {
        console.error(event.data);
    });

    myPort.start();
});

Note that the listener must call MessagePort.start() before any messages will be delivered to this port. This is only needed when using the addEventListener() method: if the receiver uses onmessage instead, start() is called implicitly:

window.addEventListener('message', (event) => {
    const myPort = event.ports[0];

    myPort.onmessage = (event) => {
        received.textContent = event.data;
    };

    myPort.onmessageerror = (event) => {
        console.error(event.data);
    };

});

Specifications

Specification Status
HTML Living Standard Living Standard

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
messageerror event Chrome

Full support 60

Edge

Full support 18

Firefox

Full support 57

IE

?

Opera

Full support 47

Safari

?

WebView Android

Full support 60

Chrome Android

Full support 60

Firefox Android

Full support 57

Opera Android

Full support 47

Safari iOS

?

Samsung Internet Android

Full support 8.0

Legend

Full support  
Full support
Compatibility unknown  
Compatibility unknown


See also