ServiceWorkerGlobalScope: событие message
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна в браузерах с апреля 2018 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна только в Сервис-воркерах.
Событие message интерфейса ServiceWorkerGlobalScope происходит при получении входящих сообщений. Страницы с контролируемым доступом могут использовать метод ServiceWorker.postMessage() для отправки сообщений сервис-воркерам. Сервис-воркер может, по желанию, отправить ответ обратно через Client.postMessage(), соответствующий контролируемой странице.
Это событие не может быть отменено и не «пузырится».
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика события.
addEventListener("message", (event) => {});
onmessage = (event) => {};
Тип события
Объект ExtendableMessageEvent. Наследуется от ExtendableEvent.
Свойства события
Наследует свойства от родительского класса ExtendableEvent.
-
ExtendableMessageEvent.dataТолько для чтения -
Возвращает данные события. Это может быть любой тип данных. Если отправлено в событии
messageerror, свойство будетnull. -
ExtendableMessageEvent.originТолько для чтения -
Возвращает источник происхождения
Client, отправившего сообщение. -
ExtendableMessageEvent.lastEventIdТолько для чтения -
Представляет, в событиях с серверной стороны, последний идентификатор события источника события.
-
ExtendableMessageEvent.sourceТолько для чтения -
Возвращает ссылку на объект
Client, отправивший сообщение. -
ExtendableMessageEvent.portsТолько для чтения -
Возвращает массив, содержащий объекты
MessagePort, представляющие порты ассоциированного канала сообщений.
Примеры
В примере ниже страница получает доступ к объекту ServiceWorker через ServiceWorkerRegistration.active и затем вызывает его функцию postMessage().
// main.js
if (navigator.serviceWorker) {
navigator.serviceWorker.register("service-worker.js");
navigator.serviceWorker.addEventListener("message", (event) => {
// event is a MessageEvent object
console.log(`The service worker sent me a message: ${event.data}`);
});
navigator.serviceWorker.ready.then((registration) => {
registration.active.postMessage("Hi service worker");
});
}
Сервис-воркер может получить сообщение, прослушивая событие message:
// service-worker.js
addEventListener("message", (event) => {
// event is an ExtendableMessageEvent object
console.log(`The client sent me a message: ${event.data}`);
event.source.postMessage("Hi client");
});
В качестве альтернативы, скрипт может прослушивать сообщение, используя onmessage:
// service-worker.js
self.onmessage = (event) => {
// event is an ExtendableMessageEvent object
console.log(`The client sent me a message: ${event.data}`);
event.source.postMessage("Hi client");
};
Спецификации
| Спецификация |
|---|
| Сервис-воркеры # eventdef-serviceworkerglobalscope-message |
| Сервис-воркеры # dom-serviceworkerglobalscope-onmessage |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
message_event |
40 | 17 | 44 | 24 | 11.1 | 40 | 44 | 24 | 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/ServiceWorkerGlobalScope/message_event