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 2023
Newly available

Since ⁨March 2023⁩, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

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

Das messageerror-Ereignis wird an 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 weitergeleitet.

Syntax

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

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

onmessageerror = (event) => { }

Ereignistyp

Ein MessageEvent. Erbt von Event.

Event MessageEvent

Ereigniseigenschaften

Diese Schnittstelle erbt auch Eigenschaften von ihrem übergeordneten Event.

MessageEvent.data Schreibgeschützt

Die vom Nachrichtenemittenten gesendeten Daten.

MessageEvent.origin Schreibgeschützt

Ein String, der den Ursprung des Nachrichtenemittenten darstellt.

MessageEvent.lastEventId Schreibgeschützt

Ein String, der eine eindeutige ID für das Ereignis darstellt.

MessageEvent.source Schreibgeschützt

Eine MessageEventSource (die ein WindowProxy, MessagePort oder ServiceWorker-Objekt sein kann), die den Nachrichtenemittenten darstellt.

MessageEvent.ports Schreibgeschützt

Ein Array, das alle MessagePort-Objekte enthält, die mit der Nachricht gesendet wurden, in der richtigen Reihenfolge.

Beispiele

Versuch, Speicher freizugeben

Ein häufiger Auslöser für messageerror-Ereignisse ist der Versuch, ein SharedArrayBuffer-Objekt oder eine Pufferansicht, die von einem solchen unterstützt wird, über Agenten-Cluster zu senden. Ein Beispiel: Ein Fenster befindet sich nicht im selben Agenten-Cluster wie ein gemeinsam genutzter Worker, den es erstellt hat. 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 empfängt der gemeinsame Worker ein messageerror-Ereignis, wenn er versucht, die vom Fenster gesendete Nachricht zu deserialisieren.

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

Spezifikationen

Specification
HTML
# event-messageerror
HTML
# handler-messageport-onmessageerror

Browser-Kompatibilität

Siehe auch