ServiceWorkerContainer: 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.
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 an den ServiceWorkerContainer ausgelöst, wenn eine eingehende Nachricht, die an den zugehörigen Worker gesendet wird, nicht deserialisiert werden kann.
Dieses Ereignis kann nicht abgebrochen werden und wird nicht weitergegeben.
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.
Beispiele
In diesem Beispiel erhält der Service Worker die ID des Clients von 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 Nachrichtendeserialisierung achten, 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 auch auf den Fehler bei der Nachrichtendeserialisierung achten, indem onmessageerror verwendet wird:
// main.js
navigator.serviceWorker.onmessageerror = (event) => {
console.error("Receive message from service worker failed!");
};
Spezifikationen
| Spezifikation |
|---|
| Service Workers Nightly> # dom-serviceworkerglobalscope-onmessageerror> |