runtime.connect()
Créer une connexion pour plusieurs cas d'utilisation pout votre extension.
Vous pouvez utiliser cette facilité dans les situations suivantes:
- Dans un script de contenu, pour établir une connexion avec le script d'arrière plan (ou tout script priviligié, comme les scripts de popup ou scripts de page d'option)
- Dans un script d'arrière plan (ou script priviligié équivalent), pour établir une connexion avec une extension différente.
Attention, vous ne pouvez pas utiliser cette fonctionnalité pour connecter une extension à son script de contenu. Pour réaliser cette opération, il vaut mieux utiliser tabs.connect()
.
Syntaxe
var port = browser.runtime.connect(
extensionId, // optional string
connectInfo, // optional object
);
Paramètres
extensionId
Facultatif-
string
. L'ID de l'extension à laquelle se connecter. Si la cible à défini un ID dans la clé applications du fichier manifest.json, alorsextensionId
doit avoir cette valeur. Autrement, il doit avoir l'ID qui a été généré pour la cible. connectInfo
Facultatif-
object
. Détails de la connexion:name
Facultatif-
string
. Sera passé dansruntime.onConnect
pour les processus qui écoutent un évènement de type connexion. includeTlsChannelId
Facultatif-
boolean
. indique si l'ID du canal TLS sera transmis àruntime.onConnectExternal
pour le processus qui écoutent l'événement de connexion.
Valeur retournée
runtime.Port
. Port à travers lequel les messages peuvent être envoyés et reçus. L'événement onDisconnect
du port est déclenché si l'extension n'existe pas.
Compatibilité des navigateurs
Report problems with this compatibility data on GitHubdesktop | mobile | ||||||
---|---|---|---|---|---|---|---|
connect |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
Exemples
Le script de contenu :
- se connecte au script d'arrière-plan et stocke le port dans une variable appelée
myPort
. - Ecoute les messages sur
myPort
et les enregistre - Envoie des messages au script d'arrière pla, en utilisant
myPort
, lorsque l'utilisateur clique sur le document.
// content-script.js
var myPort = browser.runtime.connect({ name: "port-from-cs" });
myPort.postMessage({ greeting: "hello from content script" });
myPort.onMessage.addListener(function (m) {
console.log("In content script, received message from background script: ");
console.log(m.greeting);
});
document.body.addEventListener("click", function () {
myPort.postMessage({ greeting: "they clicked the page!" });
});
Les scripts d'arrière plan correspondant :
-
Ecoute les tentatives de connexion du script de contenu.
-
Quand il reçoit une tentative de connexion :
- Stocke le port dans une variable nommé
portFromCS
. - envoie un message au script de contenu en utiliant le port.
- Commence à écouter les messages reçus sur le port, et les enregistre.
- Stocke le port dans une variable nommé
-
Envoie des messages au script de contenu, à l'aide de
portFromCS
, lorsque l'utilisateur clique sur l'action du navigateur de l'extension.
// background-script.js
var portFromCS;
function connected(p) {
portFromCS = p;
portFromCS.postMessage({ greeting: "hi there content script!" });
portFromCS.onMessage.addListener(function (m) {
console.log("In background script, received message from content script");
console.log(m.greeting);
});
}
browser.runtime.onConnect.addListener(connected);
browser.browserAction.onClicked.addListener(function () {
portFromCS.postMessage({ greeting: "they clicked the button!" });
});
Note :
Cette API est basée sur l'API Chromium chrome.runtime
. Cette documentation est dérivée de runtime.json
dans le code de Chromium code.
Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.