MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

content_scripts

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

Charge le 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 motifs d'URL à associer afin que les scripts soient chargés
  • peut contenir des clés nommées js et css, qui listent les scripts à charger dans des pages correspondantes
  • peut contenir un certain nombre d'autres propriétés qui contrôlent des aspects plus fin de la façon de comment et quand les scripts de contenu sont chargés

Les détails de toutes les clés que vous pouvez inclure sont donnés dans le tableau ci-dessous.

Name Type Description
all_frames Boolean

true : injectez les scripts spécifiés dans js et css dans toutes les frames correspondant aux exigences d'URL spécifiées, même si la frame n'est pas la frame le plus haute d'un onglet. Cela n'injecte pas dans les frames enfants où seul leur parent correspond aux exigences d'URL et la frame enfant ne correspond pas aux exigences d'URL. Les exigences d'URL sont vérifiées pour chaque frame indépendamment.

false :  injectez seulement dans les frames correspondant aux exisgences d'URL qui est la frame la plus haute dans un onglet.

Par défaut à False

css Array

Un ensemble de chemins, par rapport au manifest.json, référençant les fichiers CSS qui seront injectés dans des pages correspondantes.

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

exclude_globs Array

Un ensemble de chaînes contenant des caractères génériques. Voir les modèles d'URL correspondants ci-dessous.

exclude_matches Array

Un ensemble de modèles de correspondance. Voir les modèles d'URL correspondants ci-dessous.

include_globs Array Un ensemble de chaînes contenant des caractères génériques. Voir les modèles d'URL correspondants ci-dessous.
js Array

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

Les fichiers sont injectés dans l'ordre indiqué. Cela signifie que, par exemple, si vous incluez jQuery ici 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 Boolean

Insérez 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 vides dans des iframes, 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 charge https://example.org/, et 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 par injected dans les iframes vides à "document_start" même si vous spécifiez cette valeur dans run_at.

matches Array

Un ensemble de modèles de correspondance. Voir les Modèles d'URL correspondants ci-dessous.

C'est la seule clé obligatoire.

run_at String

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

  • "document_start" : correspond au chargement. Le DOM est toujours en cours de chargement.
  • "document_end" : correspond à l'interactif. 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 à compléter. Le document et toutes ses ressources ont terminé le chargement.

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 d'URL correspondants

La clé "content_scripts" associe les scripts de contenu aux documents en fonction de l'appariement 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 :

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

 

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

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

Etant donné que les correspondances sont 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. Correspond à la propriété des correspondances
  2. ET associez à la propriété include_globs property, si présent
  3. ET NE PAS correspondre à la propriété exclude_matches property, 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" would match "illuminati" and "annunaki", but not "sagnarelli".

Exemple

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

Cela implique 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 voient la même vue du DOM et sont injectés dans l'ordre qu'ils apparaissent dans le tableau, de sorte que "borderify.js" peut voir les variables globales ajoutées par "jquery.js".

Compatibilité du navigateur

ChromeEdgeFirefoxFirefox for AndroidOpera
Basic supportYes 1Yes48 248 2Yes 1
match_about_blankYesYes5252Yes
1. Content scripts are not applied to tabs already open when the extension is loaded.
2. Content scripts won't be injected into empty iframes at 'document_start' even if you specify that value in 'run_at'.

Étiquettes et contributeurs liés au document

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