Modules

tabs.executeScript()

Injecte du code JavaScript dans une page.

Pour utiliser cette API, vous devez disposer des droits d'accès à l'URL de la page, soit explicitement en tant que   permission d'hôte, soit en utilisant la permission activeTab.

Vous pouvez seulement injecter du code que dans les pages dont l'URL peut-être exprimée à l'aide d'un modèle de correspondance : son shéma doit être "http", "https", "file", "ftp". Cela signifie que vous ne pouvez pas injecter de code dans les pages intégrées du navigateur, comme about:debugging, about:addons, ou sur la page qui s'ouvre lorsque vous ouvrez un nouvel onglet vide.

Les scripts que vous injectez s'appellent des scripts de contenu. En savoir plus sur les scripts de contenu.

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

Syntaxe

var executing = browser.tabs.executeScript(
  tabId,                 // optional integer
  details                // object
)

Paramètres

tabId Facultatif
integer. L'ID de l'onglet dans lequel exécuter le script. Par défaut à l'onglet actif de la fenêtre en cours.
details
Un objet décrivant le script à exécuter. Il contient les propriétés suivantes:
allFrames Facultatif
boolean. Si true, le code sera injecté dans toutes les images de la page en cours. Si true et frameId sont définis, le code sera injecté dans la trame spécifiée et dans toutes les trames enfants. Si c'est false, le code est seulement injecté dans le cadre supérieur. Par défaut à false.
code Facultatif
string. Code à injecter, sous la forme d'une chaine de texte.
file Facultatif
string. Chemin d'accès ç un fichier contenant le code à injecter. Dans firefox, les URL relatives sont résolues par rapport à l'URL de la page en cours. Dans Chrome, ces URL sont résolues par rapport à l'URL de base de l'extension. Pour travailler avec plusieurs navigateurs, vous pouvez spécifier le chemin comme une URL absolue, en commençant à la racine de l'extension, comme ceci : "/path/to/script.js".
frameId Facultatif
integer. Le cadre où le code doit être injecté. La valeur par défaut est 0 (le haut du niveau supérieur).
matchAboutBlank Facultatif
boolean. Si true, le code sera injecté dans le cadre "about:blank" et "about:srcdoc" si votre extension a accès à leur document parent. Le code ne peut pas être inséré au niveau supérieur aux cadres about: . par défaut à false.
runAt Facultatif
extensionTypes.RunAt. Le plus tôt que le code sera injecté dans l'onglet. Par défaut à "document_idle".

Valeur retournée

Une Promise qui sera remplie avec un tableau d'objets, représentant le résultat du script dans chaque image injectée.

Le résultat du script est la dernière instruction évaluée, qui est similaire à ce qui serait produit (les résultats, pas n'importe quelle sortie de console.log()) si vous avez exécuté le script dans la Console Web. Par exemple, considérez un script comme celui-ci :

var foo='my result';foo;

Ici, le tableau des résultats contiendra la chaîne "my result" en tant qu'élément. Les valeurs de résultat doivent être structurées clonable.

Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

Compatibilité du navigateur

ChromeEdgeFirefoxFirefox for AndroidOpera
Support simple Oui Oui43154 Oui
runAt20 Non435415
frameId39 Non43254226
matchAboutBlank39 Oui535426

1. Before version 50, Firefox would pass a single result value into its callback rather than an array, unless 'allFrames' had been set.

2. 'allFrames' and 'frameId' can't both be set at the same time.

Exemples

Cet exemple exécute un extrait de code d'une ligne dans l'onglet actuellement actif :

function onExecuted(result) {
  console.log(`We made it green`);
}

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

var makeItGreen = 'document.body.style.border = "5px solid green"';

var executing = browser.tabs.executeScript({
  code: makeItGreen
});
executing.then(onExecuted, onError);

Cet exemple exécute un script à partir d'un fichier, empaqueté avec l'extension, appelé "content-script.js". Le script est exécuté dans l'onglet actuellement actif. Le script est exécuté dans les sous-trames ainsi que dans le document principal :

function onExecuted(result) {
  console.log(`We executed in all subframes`);
}

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

var executing = browser.tabs.executeScript({
  file: "/content-script.js",
  allFrames: true
});
executing.then(onExecuted, onError);

Cet exemple exécute un script à partir d'un fichier, empaqueté avec l'extension, appelé "content-script.js". Le script est exécuté dans l'onglet avec un ID 2 :

function onExecuted(result) {
  console.log(`We executed in tab 2`);
}

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

var executing = browser.tabs.executeScript(
  2, {
    file: "/content-script.js"
});
executing.then(onExecuted, onError);

Example extensions

Remerciements :

Cette API est basée sur l'API Chromium chrome.tabs. Cette documentation est dérivée de tabs.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.

Étiquettes et contributeurs liés au document

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