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