--- title: runtime.onConnectExternal slug: Mozilla/Add-ons/WebExtensions/API/runtime/onConnectExternal tags: - API - Add-ons - Evènement - Extensions - Non-standard - Reference - WebExtensions - onConnectExternal - runtime translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onConnectExternal ---
{{AddonSidebar()}}

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 {{WebExtAPIRef("runtime.connect()")}}, en transmettant l'ID du destinataire dans le paramètre extensionId.

L'écouteur reçoit un objet {{WebExtAPIRef('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 {{WebExtAPIRef("runtime.MessageSender")}},  et que le destinataire peut utiliser pour vérifier l'ID de l'expéditeur.

Syntaxe

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 {{WebExtAPIRef('runtime.Port')}} connectant le script en cours à l'autre extension à laquelle il se connecte.

Compatibilité du navigateur

{{Compat("webextensions.api.runtime.onConnectExternal")}}

Exemples

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

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:

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

{{WebExtExamples}}

Remerciements :

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.