runtime.onConnectExternal

Lancé lorsqu'une extension reçoit une demande de connexion d'une extension différente.

Pour envoyer un message qui sera reçu par le programme d'écoute onConnectExternal, utilisez runtime.connect(), en transmettant l'ID du destinataire dans le paramètre extensionId.

L'écouteur reçoit un objet runtime.Port qu'il peut ensuite utiliser pour envoyer et recevoir des messages. L'objet Port contient également une propriétésender, qui est un objet runtime.MessageSender, et que le destinataire peut utiliser pour vérifier l'ID de l'expéditeur.

Syntaxe

js
browser.runtime.onConnectExternal.addListener(listener);
browser.runtime.onConnectExternal.removeListener(listener);
browser.runtime.onConnectExternal.hasListener(listener);

Les événements ont trois fonctions :

addListener(callback)

Ajoute un écouteur à cet événement.

removeListener(listener)

Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.

hasListener(listener)

Vérifie si un listener est enregistré pour cet événement. Retourne true s'il écoute, false sinon.

Syntaxe addListener

Paramètres

fonction

Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :

port

Un objet runtime.Port connectant le script en cours à l'autre extension à laquelle il se connecte.

Compatibilité des navigateurs

BCD tables only load in the browser

Exemples

Dans cet exemple, l'extension Hansel se connecte à l'extension Gretel :

js
console.log("connecting to Gretel");
var 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 écoute la connexion et vérifie que l'expéditeur est vraiment Hansel:

js
var 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" });
});

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.