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