runtime.onMessageExternal
=========================

Utilisez cet événement pour écouter les messages d'une autre extension.
Pour envoyer un message qui sera reçu par le module d'écoute `onMessageExternal`, utilisez `runtime.sendMessage()`, en transmettant l'ID du destinataire dans le paramètre `extensionId`.

Avec le message lui-même, l'écouteur est transmis :

* un objet `sender` donnant des détails sur l'expéditeur du message
* une fonction `sendResponse` qu'elle peut utiliser pour renvoyer une réponse à l'expéditeur.

Cette API ne peut pas être utilisée dans un script de contenu.

Syntaxe
-------


```js
browser.runtime.onMessageExternal.addListener();
browser.runtime.onMessageExternal.removeListener(listener);
browser.runtime.onMessageExternal.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. Renvoie `true` s'il écoute, `false` sinon.

Syntaxe addListener
-------------------

### Paramètres

`function`

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

`message`

`object`. Le message lui-même. C'est un objet JSON-ifiable.


`sender`

Un objet `runtime.MessageSender` représentant l'expéditeur du message.


`sendResponse`

Une fonction à appeler, au plus une fois, pour envoyer une réponse au message. La fonction prend un seul argument, qui peut être n'importe quel objet JSON-ifiable. Cet argument est renvoyé à l'expéditeur du message.

Si vous avez plus d'un écouteur `onMessageExternal` dans le même document, un seul peut envoyer une réponse.

To send a response synchronously, call `sendResponse` before the listener function returns. To send a response asynchronously:

* Soit garder une référence à l'argumen `sendResponse` et retourne `true` à partir de la fonction d'écouteur. Vous pourrez ensuite appeler `sendResponse` après le retour de la fonction d'écouteur..
* ou retourne une `Promise` de la fonction d'écouteur et résoudre la promesse lorsque la réponse est prête.


Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Exemples
--------

Dans cet exemple, l'extension "blue@mozilla.org" envoie un message à l'extension "red@mozilla.org":


```js
// sender: browser.runtime.id == "blue@mozilla.org"

// Send a message to the extension whose ID is "red@mozilla.org"
browser.runtime.sendMessage("red@mozilla.org", "my message");
```



```js
// recipient: browser.runtime.id == "red@mozilla.org"

function handleMessage(message, sender) {
  // check that the message is from "blue@mozilla.org"
  if (sender.id === "blue@mozilla.org") {
    // process message
  }
}

browser.runtime.onMessageExternal.addListener(handleMessage);
```


**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.