--- 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 ```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 {{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 : ```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"}); }); ``` {{WebExtExamples}} > **Note :** > > Cette API est basée sur l'API Chromium [`chrome.runtime`](https://developer.chrome.com/extensions/runtime#event-onConnect). Cette documentation est dérivée de [`runtime.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/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.