MessageChannel: свойство port2
Базовая реализация Широко доступна
Эта функция хорошо реализована и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.
Примечание: Эта функция доступна в Web Workers.
Только для чтения свойство port2 интерфейса MessageChannel возвращает второй порт канала сообщений — порт, подключенный к контексту на другом конце канала, которому сообщение отправляется в первую очередь.
Значение
Объект MessagePort, представляющий второй порт канала, порт, подключенный к контексту на другом конце канала.
Примеры
В следующем блоке кода вы можете увидеть, как создается новый канал с использованием конструктора MessageChannel(). После загрузки IFrame мы передаем port2 в IFrame с помощью Window.postMessage() вместе с сообщением. Обработчик handleMessage затем реагирует на отправленное обратно сообщение из IFrame (с использованием onmessage), помещая его в абзац. За port1 прослушивается, чтобы проверить, когда пришло сообщение.
const channel = new MessageChannel();
const para = document.querySelector("p");
const ifr = document.querySelector("iframe");
const otherWindow = ifr.contentWindow;
ifr.addEventListener("load", iframeLoaded, false);
function iframeLoaded() {
otherWindow.postMessage("Hello from the main page!", "*", [channel.port2]);
}
channel.port1.onmessage = handleMessage;
function handleMessage(e) {
para.innerHTML = e.data;
}
Полный рабочий пример см. в нашем демо базовых сообщений по каналам на GitHub (запустить его онлайн).
Спецификации
| Спецификация |
|---|
| HTML # dom-messagechannel-port2-dev |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
port2 |
2 | 12 | 41 | 10.6 | 5 | 18 | 41 | 11 | 4.2 | 1.0 | 4.4 |
См. также
© 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/MessageChannel/port2