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 übergeben.

Der Listener erhält ein runtime.Port-Objekt, das er dann zum Senden und Empfangen von Nachrichten verwenden kann. Das Port-Objekt enthält auch eine sender-Eigenschaft, die ein runtime.MessageSender-Objekt ist und die der Empfänger verwenden kann, um die ID des Absenders zu überprüfen.

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 diesem Ereignis einen Listener hinzu.

removeListener(listener)

Beendet das Lauschen 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 lauscht, andernfalls 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 der anderen Erweiterung verbindet, mit der es sich verbindet.

Beispiele

In diesem Beispiel verbindet sich die Erweiterung Hansel 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 hört auf die Verbindung und überprüft, dass der Absender wirklich Hansel 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" });
});

Browser-Kompatibilität

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