ServiceWorkerGlobalScope: messageerror event

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is only available in Service Workers.

The messageerror event of the ServiceWorkerGlobalScope interface occurs when incoming messages can't be deserialized.

This event is not cancelable and does not bubble.

Syntax

Use the event name in methods like addEventListener(), or set an event handler property.

js
addEventListener("messageerror", (event) => { })

onmessageerror = (event) => { }

Event type

An ExtendableMessageEvent. Inherits from ExtendableEvent.

Event ExtendableEvent ExtendableMessageEvent

Event properties

Inherits properties from its parent, ExtendableEvent.

ExtendableMessageEvent.data Read only

Returns the event's data. It can be any data type. If dispatched in messageerror event, the property will be null.

ExtendableMessageEvent.origin Read only

Returns the origin of the Client that sent the message.

ExtendableMessageEvent.lastEventId Read only

Represents, in server-sent events, the last event ID of the event source.

ExtendableMessageEvent.source Read only

Returns a reference to the Client object that sent the message.

ExtendableMessageEvent.ports Read only

Returns the array containing the MessagePort objects representing the ports of the associated message channel.

Examples

In the below example a page gets a handle to the ServiceWorker object via ServiceWorkerRegistration.active, and then calls its postMessage() function.

js
// main.js
if (navigator.serviceWorker) {
  navigator.serviceWorker.register("service-worker.js");

  navigator.serviceWorker.addEventListener("message", (event) => {
    // event is a MessageEvent object
    console.log(`The service worker sent me a message: ${event.data}`);
  });

  navigator.serviceWorker.ready.then((registration) => {
    registration.active.postMessage("Hi service worker");
  });
}

The service worker can listen for the message deserialization error by listening to the messageerror event:

js
// service-worker.js
self.addEventListener("messageerror", (event) => {
  // event is an ExtendableMessageEvent object
  console.error("Message deserialization failed");
});

Alternatively, the script can listen for the message deserialization error using onmessageerror:

js
// service-worker.js
self.onmessageerror = (event) => {
  // event is an ExtendableMessageEvent object
  console.error("Message deserialization failed");
};

Specifications

Specification
Service Workers Nightly
# eventdef-serviceworkerglobalscope-messageerror
Service Workers Nightly
# dom-serviceworkerglobalscope-onmessageerror

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
messageerror event
Chrome – Full support
Chrome 81 (Release date: 2020-04-07)
footnote Full support
Edge – Full support
Edge 81 (Release date: 2020-04-13)
footnote Full support
Firefox – Full support
Firefox 65 (Release date: 2019-01-29)
footnote Full support
Opera – Full support
Opera 68 (Release date: 2020-04-22)
footnote Full support
Safari – Partial support
Safari 11.1 (Release date: 2018-04-12)
footnote Partial support
footnote Although the onmessageerror property is supported, the messageerror event is never fired. See bug 272967.
Chrome Android – Full support
Chrome Android 81 (Release date: 2020-04-07)
footnote Full support
Firefox for Android – Full support
Firefox for Android 65 (Release date: 2019-01-29)
footnote Full support
Opera Android – Full support
Opera Android 58 (Release date: 2020-05-13)
footnote Full support
Safari on iOS – Partial support
Safari on iOS 11.3 (Release date: 2018-03-29)
footnote Partial support
footnote Although the onmessageerror property is supported, the messageerror event is never fired. See bug 272967.
Samsung Internet – Full support
Samsung Internet 13 (Release date: 2020-12-02)
footnote Full support
WebView Android – Full support
WebView Android 81 (Release date: 2020-04-07)
footnote Full support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support

See also