tabs.connect()
Rufen Sie diese Funktion auf, um eine Verbindung zwischen den Hintergrundskripten der Erweiterung (oder anderen privilegierten Skripten wie Popup-Skripten oder Optionsseitenskripten) und allen Inhalts-Skripten, die zu dieser Erweiterung gehören und in dem angegebenen Tab ausgeführt werden, herzustellen. Diese Funktion gibt ein runtime.Port
-Objekt zurück.
Wenn dies aufgerufen wird, wird das Ereignis runtime.onConnect
in jedem Inhalts-Skript ausgelöst, das zu dieser Erweiterung gehört und im angegebenen Tab ausgeführt wird. Der Ereignis-Listener erhält ein weiteres runtime.Port
-Objekt. Die beiden Seiten können dann die Port
-Objekte verwenden, um Nachrichten auszutauschen.
Für weitere Details siehe Verbindungsbasiertes Messaging. Sie können Nachrichten auch ohne Erstellung einer Verbindung senden, für Ratschläge zur Wahl zwischen den Optionen siehe Entscheidung zwischen einmaligen Nachrichten und verbindungsbasiertem Messaging.
Syntax
browser.tabs.connect(
tabId, // integer
connectInfo // optional object
)
Parameter
tabId
-
integer
. ID des Tabs, zu dessen Inhalts-Skripten wir eine Verbindung herstellen möchten. connectInfo
Optional-
Ein Objekt mit den folgenden Eigenschaften:
name
Optional-
string
. Wird an dieruntime.onConnect
-Ereignis-Listener in Inhalts-Skripten, die zu dieser Erweiterung gehören und im angegebenen Tab ausgeführt werden, übergeben. frameId
Optional-
integer
. Öffnen Sie einen Port zu einem spezifischen Frame, der durchframeId
identifiziert wird, anstatt zu allen Frames im Tab.
Rückgabewert
runtime.Port
. Ein Port, der zum Kommunizieren mit den im angegebenen Tab ausgeführten Inhalts-Skripten verwendet werden kann.
Beispiele
In diesem Beispiel horcht ein Hintergrundskript auf einen Klick auf eine Browser-Aktion, stellt dann eine Verbindung zum aktuell aktiven Tab her und sendet anschließend eine Nachricht mithilfe des Port
, der von connect()
zurückgegeben wird:
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);
});
Browser-Kompatibilität
Hinweis:
Diese API basiert auf der Chromium-API chrome.tabs
. Diese Dokumentation ist abgeleitet von tabs.json
im Chromium-Code.