runtime.onConnectExternal
Срабатывает, когда расширение получает запрос подключения от другого расширения.
Для отправки сообщения, которое будет получено onConnectExternal слушателем, используйте runtime.connect(), передавая идентификатор получателя в параметре extensionId.
Слушателю передаётся объект runtime.Port, который он может использовать для отправки и получения сообщений. Объект Port также содержит свойство sender, которое является объектом runtime.MessageSender, и которое получатель может использовать для проверки идентификатора отправителя.
Синтаксис
browser.runtime.onConnectExternal.addListener(listener) browser.runtime.onConnectExternal.removeListener(listener) browser.runtime.onConnectExternal.hasListener(listener)
События имеют три функции:
addListener(callback)-
Добавляет слушателя к этому событию.
removeListener(listener)-
Прекращает прослушивание этого события. Аргумент
listener— это слушатель, который необходимо удалить. hasListener(listener)-
Проверяет, зарегистрирован ли
listenerдля этого события. Возвращаетtrue, если он прослушивает,false, в противном случае.
Синтаксис addListener
Параметры
function-
Функция обратного вызова, которая будет вызвана при возникновении этого события. Функция получит следующие аргументы:
port-
Объект
runtime.Port, соединяющий текущий скрипт с другим расширением, с которым он подключается.
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | |
onConnectExternal |
26 | 79 | 54 | ? | 15 | Нет | ? | ? | 54 | ? | Нет | ? |
Примеры
В этом примере расширение Hansel подключается к расширению Gretel:
console.log("connecting to Gretel"); let myPort = browser.runtime.connect( "gretel@mozilla.org" ); myPort.onMessage.addListener((message) => { console.log(`From Gretel: ${message.content}`); }); browser.browserAction.onClicked.addListener(() => { myPort.postMessage({content: "Hello from Hansel"}); });
Gretel прослушивает подключение и проверяет, что отправитель — действительно Hansel:
let portFromHansel; browser.runtime.onConnectExternal.addListener((port) => { console.log(port); if (port.sender.id === "hansel@mozilla.org") { console.log("connection attempt from Hansel"); portFromHansel = port; portFromHansel.onMessage.addListener((message) => { console.log(`From Hansel: ${message.content}`); }); } }); browser.browserAction.onClicked.addListener(() => { portFromHansel.postMessage({content: "Message from Gretel"}); });
Примечание: Этот API основан на API chrome.runtime Chromium. Данная документация взята из runtime.json кода Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnectExternal