Worker: событие сообщения
Базовая поддержка Широко доступно
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Примечание: Эта функция доступна в Веб-воркерах, за исключением Сервис-воркеров.
Событие message срабатывает в объекте Worker, когда родительский элемент получает сообщение от своего воркера (т.е. когда воркер отправляет сообщение с помощью DedicatedWorkerGlobalScope.postMessage()).
Это событие не может быть отменено и не распространяется.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("message", (event) => {});
onmessage = (event) => {};
Тип события
Объект MessageEvent. Наследует от Event.
Свойства события
Этот интерфейс также наследует свойства от своего родителя, Event.
-
MessageEvent.dataТолько для чтения -
Данные, отправленные отправителем сообщения.
-
MessageEvent.originТолько для чтения -
Строка, представляющая происхождение отправителя сообщения.
-
MessageEvent.lastEventIdТолько для чтения -
Строка, представляющая уникальный идентификатор события.
-
MessageEvent.sourceТолько для чтения -
Объект
MessageEventSource(который может быть WindowProxy,MessagePortилиServiceWorker), представляющий отправителя сообщения. -
MessageEvent.portsТолько для чтения -
Массив объектов
MessagePort, представляющих порты, связанные с каналом, через который отправляется сообщение (если это уместно, например, при обмене сообщениями через канал или при отправке сообщения в общий воркер).
Примеры
Этот код создаёт новый воркер и прослушивает сообщения от него с помощью addEventListener():
const worker = new Worker("static/scripts/worker.js");
worker.addEventListener("message", (event) => {
console.log(`Received message from worker: ${event.data}`);
});
В качестве альтернативы, можно прослушивать с помощью свойства обработчика события onmessage:
const worker = new Worker("static/scripts/worker.js");
worker.onmessage = (event) => {
console.log(`Received message from worker: ${event.data}`);
};
Воркер отправляет сообщения с помощью self.postMessage():
// static/scripts/worker.js
self.postMessage("I'm alive!");
Спецификации
| Спецификация |
|---|
| HTML # event-message |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
message_event |
4 | 12 | 3.5 | 10.6 | 4 | 18 | 4 | 11.5 | 5 | 1.0 | 4.4 |
См. также
- Связанные события:
messageerror. -
DedicatedWorkerGlobalScope.postMessage().
© 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/Worker/message_event