--- title: runtime.onMessageExternal slug: Mozilla/Add-ons/WebExtensions/API/runtime/onMessageExternal tags: - API - Add-ons - Event - Extensions - Non-standard - Reference - WebExtensions - onMessageExternal - runtime translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onMessageExternal ---
{{AddonSidebar()}}
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 {{WebExtAPIRef("runtime.sendMessage()")}}, en transmettant l'ID du destinataire dans le paramètre extensionId.

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

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

Syntax

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 {{WebExtAPIRef('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é du navigateur

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

Exemples

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

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

{{WebExtExamples}}

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.