Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

MessagePort: messageerror-Ereignis

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2023 browserübergreifend verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das messageerror-Ereignis wird bei einem MessagePort-Objekt ausgelöst, wenn es eine Nachricht erhält, die nicht deserialisiert werden kann.

Dieses Ereignis kann nicht abgebrochen werden und wird nicht weitergereicht.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.

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

onmessageerror = (event) => { }

Ereignistyp

Ein MessageEvent. Erbt von Event.

Event MessageEvent

Beispiele

Versuch, Speicher zu teilen

Eine häufige Ursache für messageerror-Ereignisse ist der Versuch, ein SharedArrayBuffer-Objekt oder eine Pufferansicht, die von einem solchen unterstützt wird, über Agenten-Cluster hinweg zu senden. Zum Beispiel befindet sich ein Fenster nicht im gleichen Agenten-Cluster wie ein von ihm erstellter Shared Worker. Angenommen, die Seite führt den folgenden Code aus:

js
const worker = new SharedWorker("worker.js");
worker.port.start();
worker.port.addEventListener("message", (event) => {
  worker.port.postMessage(new SharedArrayBuffer(1024));
});

Und worker.js enthält den folgenden Code:

js
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");
  });
});

Dann wird der Shared Worker ein messageerror-Ereignis erhalten, wenn er versucht, die vom Fenster gesendete Nachricht zu deserialisieren.

Hinweis: Sie können die Entwicklerwerkzeuge Ihres Browsers verwenden, um Ihren SharedWorker zu debuggen, indem Sie eine URL in der Adressleiste Ihres Browsers eingeben, um auf den Entwicklerwerkzeuge-Inspektor der Worker zuzugreifen; zum Beispiel in Chrome die URL chrome://inspect/#workers und in Firefox die URL about:debugging#workers.

Spezifikationen

Spezifikation
HTML
# event-messageerror
HTML
# handler-messageeventtarget-onmessageerror

Browser-Kompatibilität

Siehe auch