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 Inhaltsskripten 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 Inhaltsskript, das zu dieser Erweiterung gehört und im angegebenen Tab ausgeführt wird, ausgelöst. Dem Ereignis-Listener wird ein weiteres runtime.Port Objekt übergeben. Die beiden Seiten können dann die Port Objekte verwenden, um Nachrichten auszutauschen.

Weitere Details finden Sie unter Verbindungsbasierte Nachrichtenübermittlung. Sie können Nachrichten senden, ohne eine Verbindung herzustellen. Einen Leitfaden zur Auswahl zwischen den Optionen finden Sie unter Wahl zwischen einmaligen Nachrichten und verbindungsbasierter Nachrichtenübermittlung.

Syntax

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

Parameter

tabId

integer. ID des Tabs, zu dessen Inhaltsskripten wir eine Verbindung herstellen möchten.

connectInfo Optional

Ein Objekt mit den folgenden Eigenschaften:

name Optional

string. Wird in die runtime.onConnect Ereignis-Listener in den Inhaltsskripten ü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, anstatt zu allen Frames im Tab.

Rückgabewert

runtime.Port. Ein Port, der zur Kommunikation mit den im angegebenen Tab ausgeführten Inhaltsskripten verwendet werden kann.

Beispiele

In diesem Beispiel lauscht ein Hintergrundskript auf einen Klick auf eine Browser-Aktion, verbindet sich dann mit dem aktuell aktiven Tab und sendet dann eine Nachricht mit dem 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

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