runtime.onConnect
Wird ausgelöst, wenn eine Verbindung mit einem Erweiterungsprozess oder einem Inhalts-Skript hergestellt wird.
Syntax
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. Gibttrue
zurück, wenn es zuhört, ansonstenfalse
.
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 VariablemyPort
- 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
// 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
- speichert es den Port in einer Variable namens
-
sendet Nachrichten an das Inhalts-Skript, unter Verwendung von
portFromCS
, wenn der Benutzer auf die Browser-Aktion der Erweiterung klickt
// 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.