Spec-Zone.ru › Web Extensions

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

Spec-Zone.ru

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