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 herzustellen, die zu dieser Erweiterung gehören und im angegebenen Tab ausgeführt werden. Diese Funktion gibt ein runtime.Port Objekt zurück.

Wenn dies aufgerufen wird, wird das runtime.onConnect Ereignis in jedem Inhalts-Skript, das zu dieser Erweiterung gehört und im angegebenen Tab ausgeführt wird, ausgelöst. 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 Einzelheiten siehe Verbindungsbasierte Nachrichtenübermittlung. Sie können auch ohne Erstellung einer Verbindung Nachrichten senden. Für Ratschläge, wie Sie zwischen den Optionen wählen können, lesen Sie Auswahl zwischen einmaligen Nachrichten und verbindungsbasierten Nachrichten.

Syntax

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

Parameter

tabId

integer. ID des Tabs, dessen Inhalts-Skripte wir verbinden möchten.

connectInfo Optional

Ein Objekt mit den folgenden Eigenschaften:

name Optional

string. Wird an runtime.onConnect Ereignis-Listener in Inhalts-Skripten übergeben, die zu dieser Erweiterung gehören und im angegebenen Tab ausgeführt werden.

frameId Optional

integer. Öffnet einen Port zu einem bestimmten Frame, der durch frameId identifiziert wird, anstelle aller Frames im Tab.

Rückgabewert

runtime.Port. Ein Port, der verwendet werden kann, um mit den Inhalts-Skripten im angegebenen Tab zu kommunizieren.

Beispiele

In diesem Beispiel hört ein Hintergrundskript auf einen Klick auf eine Browser-Aktion, stellt dann eine Verbindung zum aktuell aktiven Tab her und sendet anschließend eine Nachricht über den Port, der von connect() zurückgegeben wird:

js
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

BCD tables only load in the browser

Hinweis: Diese API basiert auf Chromiums chrome.tabs API. Diese Dokumentation ist abgeleitet von tabs.json im Chromium-Code.