ServiceWorkerContainer: 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.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das messageerror
-Ereignis wird dem ServiceWorkerContainer
ausgelöst, wenn eine eingehende Nachricht, die an den zugehörigen Worker gesendet wird, nicht deserialisiert werden kann.
Dieses Ereignis ist nicht abbruchfähig und wird nicht weitergereicht.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("messageerror", (event) => {});
onmessageerror = (event) => {};
Ereignistyp
Ein MessageEvent
. Erbt von Event
.
Eigenschaften des Ereignisses
Diese Schnittstelle erbt auch Eigenschaften von ihrem übergeordneten Element, Event
.
MessageEvent.data
Schreibgeschützt-
Die vom Nachrichtensender gesendeten Daten.
MessageEvent.origin
Schreibgeschützt-
Ein String, der die Herkunft des Nachrichtensenders darstellt.
MessageEvent.lastEventId
Schreibgeschützt-
Ein String, der eine eindeutige ID für das Ereignis darstellt.
MessageEvent.source
Schreibgeschützt-
Eine
MessageEventSource
(kann ein WindowProxy,MessagePort
oderServiceWorker
Objekt sein), die den Nachrichtensender darstellt. MessageEvent.ports
Schreibgeschützt-
Ein Array von
MessagePort
-Objekten, die die mit dem Kanal verbundenen Ports darstellt, über den die Nachricht gesendet wird (wo geeignet, z.B. in der Kanalkommunikation oder beim Senden einer Nachricht an einen Shared Worker).
Beispiele
In diesem Beispiel erhält der Service Worker die ID des Clients aus einem fetch
-Ereignis und sendet ihm dann eine Nachricht mit Client.postMessage
:
// service-worker.js
async function messageClient(clientId) {
const client = await self.clients.get(clientId);
client.postMessage("Hi client!");
}
self.addEventListener("fetch", (event) => {
messageClient(event.clientId);
event.respondWith(() => {
// …
});
});
Der Service Worker kann auf den Fehler bei der Nachrichtendeserialization hören, indem er auf das messageerror
-Ereignis hört:
// main.js
navigator.serviceWorker.addEventListener("messageerror", (event) => {
console.error("Receive message from service worker failed!");
});
Alternativ kann das Skript den Fehler bei der Nachrichtendeserialization mit onmessageerror
abfangen:
// main.js
navigator.serviceWorker.onmessageerror = (event) => {
console.error("Receive message from service worker failed!");
};
Spezifikationen
Specification |
---|
Service Workers # dom-serviceworkerglobalscope-onmessageerror |
Browser-Kompatibilität
BCD tables only load in the browser