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

js
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 die runtime.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 durch frameId 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:

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 der Chromium-API chrome.tabs. Diese Dokumentation ist abgeleitet von tabs.json im Chromium-Code.