Type Tableau
Obligatoire Non
Exemple
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

Ordonne au navigateur de charger des scripts de contenu dans les pages web dont l’URL correspond à un modèle donné.

Cette clé est un tableau. Chaque élément est un objet qui :

  • doit contenir une clé nommée matches, qui spécifie les modèles d’URL à reconnaître afin que les scripts soient chargés ;
  • peut contenir des clés nommées js et css, qui listent les scripts à charger dans les pages correspondantes ;
  • peut contenir un certain nombre d’autres propriétés qui contrôlent des aspects plus fins correspondant à quand et comment les scripts de contenu sont chargés.

Le tableau ci-dessous présente le détail de toutes les clés que vous pouvez inclure.

Nom Type Description
all_frames Booléen

true : injecte les scripts spécifiés dans js et css dans tous les cadres correspondant aux exigences d’URL spécifiées, même s’il n’est pas le cadre le plus haut d’un onglet. Cela n’injecte pas dans les cadres enfants quand seul leur parent correspond aux exigences d’URL et pas les cadres enfants. Les exigences d’URL sont vérifiées pour chaque cadre indépendamment.

false : injecte seulement dans le cadre le plus haut de l’onglet qui répond aux exigences d’URL.

Par défaut à false.

css Tableau

Un tableau de chemins, relatifs à manifest.json, référençant les fichiers CSS qui seront injectés dans les pages correspondantes.

Les fichiers sont injectés dans l’ordre donné, et avant que le DOM ne soit chargé.

exclude_globs Tableau

Un tableau de chaînes contenant des caractères génériques. Voir les modèles de correpondance d’URL ci-dessous.

exclude_matches Tableau

Un tableau de modèles de correspondance. Voir les modèles de correpondance d’URL ci-dessous.

include_globs Tableau Un tableau de chaînes contenant des caractères génériques. Voir les modèles de correpondance d’URL ci-dessous.
js Tableau

Un tableau de chemins, relatifs au fichier manifest.json, référençant les fichiers JavaScript qui seront injectés dans les pages correspondantes.

Les fichiers sont injectés dans l’ordre indiqué. Cela signifie que, par exemple, si vous incluez ici jQuery suivi d’un autre script de contenu, comme ceci :

"js": ["jquery.js", "my-content-script.js"]

alors my-content-script.js peut utiliser jQuery.

Les fichiers sont injectés au moment spécifié par run_at.

match_about_blank Booléen

Insère les scripts de contenu dans les pages dont l’URL est about:blank ou about:srcdoc, si l’URL de la page qui a ouvert ou créé cette page correspond aux modèles spécifiés dans le reste de la clé content_scripts.

Ceci est particulièrement utile pour exécuter des scripts dans des iframes vides, dont l’URL est about:blank. Pour ce faire, vous devez également définir la clé all_frames.

Par exemple, supposons que vous disposiez d’une clé de content_scripts comme ceci :

"content_scripts": [
  {
    "js": ["my-script.js"],
    "matches": ["https://example.org/"],
    "match_about_blank": true,
    "all_frames": true
  }
]

Si l’utilisateur ou l’utilisatrice charge https://example.org/, et si cette page intègre une iframe vide, alors my-script.js sera chargé dans l’iframe.

match_about_blank est supporté dans Firefox à partir de la version 52. Notez que dans Firefox, les scripts de contenu ne seront pas injectés dans les iframes vides à "document_start" même si vous spécifiez cette valeur dans run_at.

matches Tableau

Un ensemble de modèles de correspondance. Voir les modèles de correpondance d’URL ci-dessous.

C’est la seule clé obligatoire.

run_at Chaîne

Cette option détermine quand les scripts spécifiés dans js sont injectés. Vous pouvez fournir une chaîne parmi trois ici, chacune identifiant un état dans le processus de chargement d’un document. Les états correspondent directement à Document.readyState :

  • "document_start" : correspond à "loading". Le DOM est toujours en cours de chargement.
  • "document_end" : correspond à "interactive". Le DOM a fini de charger, mais des ressources telles que des scripts et des images peuvent toujours être en cours de chargement.
  • "document_idle" : correspond à "complete". Le document et toutes ses ressources ont terminé de charger.

La valeur par défaut est "document_idle".

Dans tous les cas, les fichiers dans js sont injectés après les fichiers dans css.

Les modèles de correspondance d’URL

La clé content_scripts associe les scripts de contenu aux documents en fonction de la correspondance des URL : si l’URL du document correspond à la spécification de la clé, le script sera joint. Il existe quatre propriétés dans content_scripts que vous pouvez utiliser pour cette spécification :

  • matches : un tableau de match patterns (modèles).
  • exclude_matches : un tableau de match patterns.
  • include_globs : un tableau de globs (caractères génériques).
  • exclude_globs : un tableau de globs.

Pour associer une de ces propriétés, une URL doit correspondre à au moins un des éléments de son tableau. Par exemple, donner une propriété comme :

"matches": ["*://*.example.org/*", "*://*.example.com/*"]

Les deux adresses http://example.org/ et http://example.com/ correspondront.

Étant donné que matches est la seule clé obligatoire, les trois autres clés sont utilisées pour limiter davantage les URL qui correspondent. Pour associer la clé dans son ensemble, une URL doit :

  1. Correspondre à la propriété matches ;
  2. ET associer à la propriété include_globs, si présent ;
  3. ET NE PAS correspondre à la propriété exclude_matches, si présent ;
  4. ET NE PAS correspondre à la propriété exclude_globs, si présent.

globs

Un « glob » est juste une chaîne qui peut contenir des caractères génériques. Il existe deux types de caractères génériques, et vous pouvez les combiner dans le même glob :

  • "*" correspond à zéro ou plus de caractères
  • "?" correspond exactement à un caractère.

Par exemple : "*na?i" correspond à "illuminati" et à "annunaki", mais pas à "sagnarelli".

Exemple

"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

Cela injecte un seul script de contenu borderify.js dans toutes les pages sous mozilla.org ou l’un de ses sous-domaines, qu’ils soient fournis via HTTP ou HTTPS.

"content_scripts": [
  {
    "exclude_matches": ["*://developer.mozilla.org/*"],
    "matches": ["*://*.mozilla.org/*"],
    "js": ["jquery.js", "borderify.js"]
  }
]

Cela implique deux scripts de contenu dans toutes les pages sous mozilla.org ou l’un de ses sous-domaines, à l’exception de developer.mozilla.org, qu’il s’agisse de HTTP ou HTTPS.

Les scripts de contenu ont la même vue du DOM et sont injectés dans l’ordre où ils apparaissent dans le tableau, de sorte que borderify.js peut voir les variables globales ajoutées par jquery.js.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxOperaFirefox pour Android
content_scriptsChrome Support complet Oui
Notes
Support complet Oui
Notes
Notes Content scripts are not applied to tabs already open when the extension is loaded.
Edge Support complet 14Firefox Support complet 48Opera Support complet Oui
Notes
Support complet Oui
Notes
Notes Content scripts are not applied to tabs already open when the extension is loaded.
Firefox Android Support complet 48
all_framesChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48
cssChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48
exclude_globsChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48
exclude_matchesChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48
include_globsChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48
jsChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48
match_about_blankChrome Support complet OuiEdge Support complet 14Firefox Support complet 52
Notes
Support complet 52
Notes
Notes Content scripts won't be injected into empty iframes at 'document_start' even if you specify that value in 'run_at'.
Opera Support complet OuiFirefox Android Support complet 52
Notes
Support complet 52
Notes
Notes Content scripts won't be injected into empty iframes at 'document_start' even if you specify that value in 'run_at'.
matchesChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48
run_atChrome Support complet OuiEdge Support complet 14Firefox Support complet 48Opera Support complet OuiFirefox Android Support complet 48

Légende

Support complet  
Support complet
Voir les notes d'implémentation.
Voir les notes d'implémentation.

Étiquettes et contributeurs liés au document

Étiquettes : 
Contributeurs à cette page : Watilin, mdnwebdocs-bot, hellosct1, loella16
Dernière mise à jour par : Watilin,