ServiceWorkerContainer: событие message
Базовая поддержка Широко доступно
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в API веб-воркеров.
Событие message используется на странице, управляемой сервисным рабочим, для получения сообщений от сервисного рабочего.
Это событие нельзя отменить и не распространяется.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.
addEventListener("message", (event) => {});
onmessage = (event) => {};
Тип события
A 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 clients.get(clientId);
client.postMessage("Hi client!");
}
addEventListener("fetch", (event) => {
messageClient(event.clientId);
event.respondWith(() => {
// …
});
});
Клиент может получить сообщение, прослушивая событие message:
// main.js
navigator.serviceWorker.addEventListener("message", (message) => {
console.log(message);
});
В качестве альтернативы, клиент может получить сообщение с помощью обработчика события onmessage:
// main.js
navigator.serviceWorker.onmessage = (message) => {
console.log(message);
};
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
message_event |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
См. также
© 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/message_event