Cette traduction est en cours.

Envoi un message unique depuis le script d'arrière plan d'extension (ou autre scripts accrédité, comme les scripts popup ou les scripts de page d'options) vers n'importe quel script de contenu concerné par l'extension et qui s'execute dans l'onglet spécifié.
Ce message sera reçu dans script de contenu par n'importe quel gestionnaire d'évènements à l'écoute de l'évènement

runtime.onMessage. Les gestionnaires d'évènements peuvent optionellement envoyé une réponse en retour au script d'arrière plan en utilisant l'argument sendResponse.

Il s'agit d'une fonction asynchrone qui renvoit un objet Promise

Syntaxe

var sending = browser.tabs.sendMessage(
  tabId,                   // integer
  message,                 // any
  options                  // optional object
)

Paramètres

tabId
integer. ID de l'onglet qui contient le script de contenu auquel on veut envoyer un message.
message
any. Un objet qui peut être sérialisé en JSON.
optionsFacultatif
object.
frameIdFacultatif
integer.  Envoi le message dans une "frame" spécifique, identifiée avec le frameId au lieu de toutes les "frames" de l'onglet.

Valeur de retour

Un objet Promise qui sera rempli avec une réponse objet au format JSON envoyé par le gestionnaire de message dans le script de contenu, ou sans arguments si le script de contenu n'a pas renvoyé de réponses. Si une erreur survient durant la connexion avec l'onglet spécifié, ou si n'importe quelle erreur survient, la promesse sera rejeté avec un message d'erreur.

Compatiblité des navigateurs

ChromeEdgeFirefoxFirefox for AndroidOpera
Support simple (Oui) (Oui)14554 (Oui)

1. No response is sent after the receiving tab is refreshed if there is no `runtime.onMessage` listener.

Exemples

Voici un exemple de script d'arrière plan qui envoi un message au script de contenu qui s'execute dans l'onglet actif quand le client clique sur l'icone de l'extension. Le script d'arrière plan s'attend également que le script de contenu lui renvoit une réponse:

// background-script.js
"use strict";

function onError(error) {
  console.error(`Error: ${error}`);
}

function sendMessageToTabs(tabs) {
  for (let tab of tabs) {
    browser.tabs.sendMessage(
      tab.id,
      {greeting: "Hi from background script"}
    ).then(response => {
      console.log("Message from the content script:");
      console.log(response.response);
    }).catch(onError);
  }
}

browser.browserAction.onClicked.addListener(() => {
  browser.tabs.query({
    currentWindow: true,
    active: true
  }).then(sendMessageToTabs).catch(onError);
});

Voici le script de contenu associé:

// content-script.js
"use strict";

browser.runtime.onMessage.addListener(request => {
  console.log("Message from the background script:");
  console.log(request.greeting);
  return Promise.resolve({response: "Hi from content script"});
});

Example extensions

Remarques

Cette API est basée sur chrome.tabs (API de Chromium). Cette documentation est dérivée de tabs.json dans le code de Chromium.

Les informations de compatibilité de Microsoft Edge sont fournies par Microsoft Corporation et sont fournies ici sous Creative Commons Attribution 3.0 United States License.

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : Ostefanini
 Dernière mise à jour par : Ostefanini,