Spec-Zone.ru › Web Extensions

runtime.onConnect

Срабатывает при подключении к процессу расширения или скрипту содержимого.

Синтаксис

browser.runtime.onConnect.addListener(listener)
browser.runtime.onConnect.removeListener(listener)
browser.runtime.onConnect.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
onConnect 26 14 45 ? 15 14 ? ? 48 ? 15 ?

Примеры

Этот скрипт содержимого:

  • подключается к скрипту фона и сохраняет Port в переменной myPort
  • прослушивает сообщения на myPort, и регистрирует их
  • отправляет сообщения скрипту фона, используя myPort, когда пользователь нажимает на документ
// content-script.js

let myPort = browser.runtime.connect({name:"port-from-cs"});
myPort.postMessage({greeting: "hello from content script"});

myPort.onMessage.addListener((m) => {
  console.log("In content script, received message from background script: ");
  console.log(m.greeting);
});

document.body.addEventListener("click", () => {
  myPort.postMessage({greeting: "they clicked the page!"});
});

Соответствующий скрипт фона:

  • прослушивает попытки подключения со стороны скрипта содержимого
  • при получении попытки подключения:
    • сохраняет порт в переменную portFromCS
    • отправляет скрипту содержимого сообщение через порт
    • начинает прослушивать сообщения, полученные через порт, и регистрирует их
  • отправляет сообщения скрипту содержимого, используя portFromCS, когда пользователь нажимает на действие расширения в браузере
// background-script.js

let portFromCS;

function connected(p) {
  portFromCS = p;
  portFromCS.postMessage({greeting: "hi there content script!"});
  portFromCS.onMessage.addListener((m) => {
    console.log("In background script, received message from content script")
    console.log(m.greeting);
  });
}

browser.runtime.onConnect.addListener(connected);

browser.browserAction.onClicked.addListener(() => {
  portFromCS.postMessage({greeting: "they clicked the button!"});
});

Примечание: Этот 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/onConnect

Spec-Zone.ru

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