runtime.onConnectExternal

Wird ausgelöst, wenn eine Erweiterung eine Verbindungsanfrage von einer anderen Erweiterung erhält.

Um eine Nachricht zu senden, die vom onConnectExternal-Listener empfangen wird, verwenden Sie runtime.connect(), indem Sie die ID des Empfängers im extensionId-Parameter angeben.

Dem Listener wird ein runtime.Port Objekt übergeben, das verwendet werden kann, um Nachrichten zu senden und zu empfangen. Das Port-Objekt enthält auch eine sender-Eigenschaft, die ein runtime.MessageSender Objekt ist und vom Empfänger zur Überprüfung der Sender-ID verwendet werden kann.

Syntax

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

Ereignisse haben drei Funktionen:

addListener(listener)

Fügt einen Listener zu diesem Ereignis hinzu.

removeListener(listener)

Stoppt das Lauschen auf dieses Ereignis. Das listener-Argument ist der zu entfernende Listener.

hasListener(listener)

Überprüft, ob ein listener für dieses Ereignis registriert ist. Gibt true zurück, wenn es aktiv ist, andernfalls false.

Syntax von addListener

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 der anderen Erweiterung verbindet, zu der es eine Verbindung herstellt.

Browser-Kompatibilität

BCD tables only load in the browser

Beispiele

In diesem Beispiel verbindet sich die Erweiterung Hänsel mit der Erweiterung Gretel:

js
console.log("connecting to Gretel");
let myPort = browser.runtime.connect("gretel@mozilla.org");

myPort.onMessage.addListener((message) => {
  console.log(`From Gretel: ${message.content}`);
});

browser.browserAction.onClicked.addListener(() => {
  myPort.postMessage({ content: "Hello from Hansel" });
});

Gretel lauscht auf die Verbindung und überprüft, ob der Absender wirklich Hänsel ist:

js
let portFromHansel;

browser.runtime.onConnectExternal.addListener((port) => {
  console.log(port);
  if (port.sender.id === "hansel@mozilla.org") {
    console.log("connection attempt from Hansel");
    portFromHansel = port;
    portFromHansel.onMessage.addListener((message) => {
      console.log(`From Hansel: ${message.content}`);
    });
  }
});

browser.browserAction.onClicked.addListener(() => {
  portFromHansel.postMessage({ content: "Message from Gretel" });
});

Hinweis: Diese API basiert auf der chrome.runtime API von Chromium. Diese Dokumentation stammt aus runtime.json im Chromium-Code.