--- 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.
// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following disclaimer // in the documentation and/or other materials provided with the // distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.