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

js
var port = browser.runtime.connect(
  extensionId, // optional string
  connectInfo, // optional object
);

Paramètres

extensionIdFacultatif

string. L'ID de l'extension à laquelle se connecter. Si la cible à défini un ID dans la clé applications du fichier manifest.json, alors extensionId doit avoir cette valeur. Autrement, il doit avoir l'ID qui a été généré pour la cible.

connectInfoFacultatif

object. Détails de la connexion:

nameFacultatif

string. Sera passé dans runtime.onConnect pour les processus qui écoutent un évènement de type connexion.

includeTlsChannelIdFacultatif

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

Loading BCD table

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.
js
// 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.
  • Envoie des messages au script de contenu, à l'aide de portFromCS, lorsque l'utilisateur clique sur l'action du navigateur de l'extension.

js
// 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.