Spec-Zone.ru › Web Extensions

tabs.connect()

Вызовите эту функцию, чтобы установить соединение между фоновыми скриптами расширения (или другими привилегированными скриптами, такими как скрипты всплывающего окна или страницы настроек) и любыми скриптами содержимого, которые принадлежат этому расширению и выполняются в указанной вкладке. Эта функция возвращает объект runtime.Port.

При вызове этого метода событие runtime.onConnect будет сгенерировано в любом скрипте содержимого, принадлежащем этому расширению и выполняющемся в указанной вкладке. Обработчик события получит другой объект runtime.Port. Затем две стороны могут использовать объекты Port для обмена сообщениями.

Дополнительную информацию см. в разделе обмен сообщениями на основе соединений. Вы можете обмениваться сообщениями без создания соединения, рекомендации по выбору между вариантами см. в разделе Выбор между разовыми сообщениями и обменом сообщениями на основе соединений.

Синтаксис

browser.tabs.connect(
  tabId,      // integer
  connectInfo // optional object
)

Параметры

tabId

integer. Идентификатор вкладки, скрипты содержимого которой мы хотим подключить.

connectInfo Необязательно

Объект со следующими свойствами:

name Необязательно

string. Будет передан в обработчики событий runtime.onConnect в скриптах содержимого, принадлежащих этому расширению и выполняющихся в указанной вкладке.

frameId Необязательно

integer. Открыть порт к определённой вкладке, идентифицируемой по frameId, вместо всех вкладок в текущей вкладке.

Возвращаемое значение

runtime.Port. Порт, который можно использовать для связи со скриптами содержимого, выполняющимися в указанной вкладке.

Примеры

В этом примере фоновый скрипт прослушивает щелчок по действию браузера, затем подключается к активной вкладке и отправляет сообщение, используя объект Port, возвращаемый connect().

function connectToTab(tabs) {
  if (tabs.length > 0) {
    let examplePort = browser.tabs.connect(
      tabs[0].id,
      {name: "tabs-connect-example"}
    );
    examplePort.postMessage({greeting: "Hi from background script"});
  }
}

function onError(error) {
  console.log(`Error: ${error}`);
}

browser.browserAction.onClicked.addListener(() => {
  let gettingActive = browser.tabs.query({
    currentWindow: true, active: true
  });
  gettingActive.then(connectToTab, onError);
});

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
connect 5 79 45 ? 15 14 ? ? 54 ? 15 ?

Примечание: Этот API основан на API chrome.tabs Chromium. Данная документация получена из tabs.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/tabs/connect

Spec-Zone.ru

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