MessagePort: messageerror event
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.
Note: This feature is available in Web Workers.
The messageerror event is fired on a MessagePort object when it receives a message that can't be deserialized.
This event is not cancellable and does not bubble.
Syntax
Use the event name in methods like addEventListener(), or set an event handler property.
addEventListener("messageerror", (event) => { })
onmessageerror = (event) => { }
Event type
A MessageEvent. Inherits from Event.
Event properties
This interface also inherits properties from its parent, Event.
MessageEvent.dataRead only-
The data sent by the message emitter.
MessageEvent.originRead only-
A string representing the origin of the message emitter.
MessageEvent.lastEventIdRead only-
A string representing a unique ID for the event.
MessageEvent.sourceRead only-
A
MessageEventSource(which can be a WindowProxy,MessagePort, orServiceWorkerobject) representing the message emitter. MessageEvent.portsRead only-
An array containing all
MessagePortobjects sent with the message, in order.
Examples
>Attempting to share memory
A common cause of messageerror events is attempting to send a SharedArrayBuffer object, or a buffer view backed by one, across agent clusters. For example, a window is not in the same agent cluster as a shared worker it created, so suppose the page runs the following code:
const worker = new SharedWorker("worker.js");
worker.port.start();
worker.port.addEventListener("message", (event) => {
worker.port.postMessage(new SharedArrayBuffer(1024));
});
And worker.js contains the following code:
self.addEventListener("connect", (event) => {
console.log("Hello");
const port = event.ports[0];
port.start();
port.postMessage("Port connected");
port.addEventListener("messageerror", (event) => {
console.log("Message error");
});
});
Then the shared worker will receive a messageerror event when it tries to deserialize the message sent from the window.
Note:
You can use browser devtools to debug your SharedWorker, by entering a URL in your browser address bar to access the devtools workers inspector; for example, in Chrome, the URL chrome://inspect/#workers, and in Firefox, the URL about:debugging#workers.
Specifications
| Specification |
|---|
| HTML> # event-messageerror> |
| HTML> # handler-messageport-onmessageerror> |
Browser compatibility
Loading…
See also
- Related events:
message. - Using channel messaging