Spec-Zone.ru › Web APIs

ServiceWorkerGlobalScope: событие message

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна в браузерах с апреля 2018 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна только в Сервис-воркерах.

Событие message интерфейса ServiceWorkerGlobalScope происходит при получении входящих сообщений. Страницы с контролируемым доступом могут использовать метод ServiceWorker.postMessage() для отправки сообщений сервис-воркерам. Сервис-воркер может, по желанию, отправить ответ обратно через Client.postMessage(), соответствующий контролируемой странице.

Это событие не может быть отменено и не «пузырится».

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика события.

addEventListener("message", (event) => {});

onmessage = (event) => {};

Тип события

Объект ExtendableMessageEvent. Наследуется от ExtendableEvent.

Событие ExtendableEvent ExtendableMessageEvent

Свойства события

Наследует свойства от родительского класса 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

См. также

  • Использование Сервис-воркеров
  • Базовый пример кода Сервис-воркера
  • Использование Web-воркеров

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API