Spec-Zone.ru › Web APIs

API Сообщений Каналов

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

API Сообщений Каналов позволяет двум отдельным скриптам, работающим в разных контекстах просмотра, прикреплённых к одному документу (например, два IFrames, или основной документ и IFrame, два документа через SharedWorker, или два потока), обмениваться сообщениями напрямую через двунаправленные каналы (или трубы) с портом на каждом конце.

Концепции и использование

Канал сообщений создаётся с помощью конструктора MessageChannel(). После создания, два порта канала можно получить через свойства MessageChannel.port1 и MessageChannel.port2 (которые оба возвращают объекты MessagePort.) Приложение, создавшее канал, использует port1, а приложение на другом конце порта использует port2 — вы отправляете сообщение в port2, и передаёте владение портом в другой контекст просмотра с помощью window.postMessage вместе с двумя аргументами (сообщение для отправки и объект, передающий владение, в данном случае сам порт.)

При передаче этих передаваемых объектов, они больше не доступны в контексте, к которому они ранее принадлежали. После отправки порт больше не может использоваться исходным контекстом.

Другой контекст просмотра может прослушивать сообщение с помощью onmessage и получить содержимое сообщения с помощью атрибута data события. Затем вы можете ответить, отправив сообщение обратно в исходный документ с помощью MessagePort.postMessage.

Когда вы хотите прекратить отправку сообщений по каналу, вы можете вызвать MessagePort.close для закрытия портов.

Дополнительную информацию о том, как использовать этот API, см. в разделе Использование обмена сообщениями через каналы.

Интерфейсы

MessageChannel

Создаёт новый канал сообщений для отправки сообщений.

MessagePort

Управляет портами в канале сообщений, позволяя отправлять сообщения с одного порта и прослушивать их получение на другом.

Примеры

  • Мы опубликовали демо канала сообщений basic на GitHub (запустить его онлайн), который демонстрирует очень простой пример передачи одного сообщения между страницей и встраиваемым <iframe>.
  • Вы также можете посмотреть демо multimessaging (запустить онлайн), который демонстрирует несколько более сложную настройку, которая может отправлять несколько сообщений между основной страницей и IFrame.

Спецификации

Спецификация
HTML
# channel-messaging

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
Channel_Messaging_API 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4
close 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4
message_event 2 12 41 10.6 5 18 41 11.5 4.2 1.0 ≤37
messageerror_event 60 18 57 47 16.4 60 57 47 16.4 8.0 60
postMessage 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4
start 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4
worker_support 4 12 41 ≤15 5 18 41 ≤14 4.2 1.0 ≤37
Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
MessageChannel 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4
Channel_Messaging_API 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4
port1 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4
port2 2 12 41 10.6 5 18 41 11 4.2 1.0 4.4

api.КаналСообщений

Таблицы BCD загружаются только в браузере

api.ПортСообщений

Таблицы BCD загружаются только в браузере

См. также

  • Использование обмена сообщениями через каналы
  • API потоков JavaScript
  • API канала трансляции

© 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/Channel_Messaging_API

Spec-Zone.ru

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