runtime.onConnect

Wird ausgelöst, wenn eine Verbindung mit einem Erweiterungsprozess oder einem Inhalts-Skript hergestellt wird.

Syntax

js
browser.runtime.onConnect.addListener(listener)
browser.runtime.onConnect.removeListener(listener)
browser.runtime.onConnect.hasListener(listener)

Ereignisse haben drei Funktionen:

addListener(listener)

Fügt diesem Ereignis einen Listener hinzu.

removeListener(listener)

Stoppt das Zuhören auf dieses Ereignis. Das Argument listener ist der zu entfernende Listener.

hasListener(listener)

Überprüft, ob ein listener für dieses Ereignis registriert ist. Gibt true zurück, wenn es zuhört, ansonsten false.

addListener-Syntax

Parameter

function

Die Funktion, die aufgerufen wird, wenn dieses Ereignis eintritt. Der Funktion wird dieses Argument übergeben:

port

Ein runtime.Port-Objekt, das das aktuelle Skript mit dem anderen Kontext verbindet, zu dem es sich verbindet.

Browser-Kompatibilität

BCD tables only load in the browser

Beispiele

Dieses Inhalts-Skript:

  • stellt eine Verbindung zum Hintergrundskript her und speichert den Port in einer Variable myPort
  • hört auf Nachrichten bei myPort und protokolliert sie
  • sendet Nachrichten an das Hintergrundskript, unter Verwendung von myPort, wenn der Benutzer auf das Dokument klickt
js
// content-script.js

let myPort = browser.runtime.connect({ name: "port-from-cs" });
myPort.postMessage({ greeting: "hello from content script" });

myPort.onMessage.addListener((m) => {
  console.log("In content script, received message from background script: ");
  console.log(m.greeting);
});

document.body.addEventListener("click", () => {
  myPort.postMessage({ greeting: "they clicked the page!" });
});

Das entsprechende Hintergrundskript:

  • hört auf Verbindungsversuche des Inhalts-Skriptes

  • wenn ein Verbindungsversuch empfangen wird:

    • speichert es den Port in einer Variable namens portFromCS
    • sendet dem Inhalts-Skript eine Nachricht unter Verwendung des Ports
    • beginnt, auf Nachrichten zu hören, die über den Port empfangen werden, und protokolliert sie
  • sendet Nachrichten an das Inhalts-Skript, unter Verwendung von portFromCS, wenn der Benutzer auf die Browser-Aktion der Erweiterung klickt

js
// background-script.js

let portFromCS;

function connected(p) {
  portFromCS = p;
  portFromCS.postMessage({ greeting: "hi there content script!" });
  portFromCS.onMessage.addListener((m) => {
    console.log("In background script, received message from content script");
    console.log(m.greeting);
  });
}

browser.runtime.onConnect.addListener(connected);

browser.browserAction.onClicked.addListener(() => {
  portFromCS.postMessage({ greeting: "they clicked the button!" });
});

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