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
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. Gibttrue
zurück, wenn es aktiv ist, andernfallsfalse
.
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:
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:
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.