ServiceWorkerContainer: событие messageerror
Базовая версия 2023
Новое
С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в API веб-рабочих потоков.
Событие messageerror срабатывает в ServiceWorkerContainer, когда приходящее сообщение, отправленное ассоциированному рабочему потоку, не может быть десериализовано.
Это событие не отменяется и не распространяется.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.
addEventListener("messageerror", (event) => {});
onmessageerror = (event) => {};
Тип события
Тип MessageEvent. Наследуется от Event.
Свойства события
Этот интерфейс также наследует свойства от своего родителя, Event.
-
MessageEvent.dataТолько для чтения -
Данные, отправленные отправителем сообщения.
-
MessageEvent.originТолько для чтения -
Строка, представляющая происхождение отправителя сообщения.
-
MessageEvent.lastEventIdТолько для чтения -
Строка, представляющая уникальный идентификатор события.
-
MessageEvent.sourceТолько для чтения -
Объект
MessageEventSource(который может быть WindowProxy,MessagePortилиServiceWorker), представляющий отправителя сообщения. -
MessageEvent.portsТолько для чтения -
Массив объектов
MessagePort, представляющих порты, связанные с каналом, через который отправляется сообщение (где это уместно, например, при обмене сообщениями через канал или при отправке сообщения в общий рабочий поток).
Примеры
В этом примере рабочий поток получает идентификатор клиента из события fetch и отправляет ему сообщение с помощью 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(() => {
// …
});
});
Рабочий поток может прослушивать ошибку десериализации сообщения, прослушивая событие messageerror:
// main.js
navigator.serviceWorker.addEventListener("messageerror", (event) => {
console.error("Receive message from service worker failed!");
});
В качестве альтернативы, сценарий может прослушивать ошибку десериализации сообщения, используя onmessageerror:
// main.js
navigator.serviceWorker.onmessageerror = (event) => {
console.error("Receive message from service worker failed!");
};
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
messageerror_event |
80 | 8017–79 | 65 | 67 | 16.411.1–16.4Несмотря на поддержку свойства обработчика событияonmessageerror, событие messageerror никогда не срабатывает. |
80 | 65 | 57 | 16.411.3–16.4Несмотря на поддержку свойства обработчика событияonmessageerror, событие messageerror никогда не срабатывает. |
13.0 | 80 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/messageerror_event