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 addEventListener():
addEventListener("messageerror", (event) => { })
Alternatively, assign to the event handler property of the interface:
onmessageerror = (event) => { }
Event type
A MessageEvent. Inherits from Event.
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-messageeventtarget-onmessageerror> |
Browser compatibility
See also
- Related events:
message. - Using channel messaging