Manifest - inhoudsscripts

De sleutel "content_scripts" specificeert een statisch geladen JavaScript- of CSS-bestand dat moet worden gebruikt telkens wanneer een pagina wordt geopend die overeenkomt met een bepaald URL-patroon . Extensies kunnen inhoudsscripts ook programmatisch injecteren, zie Scripts injecteren voor details.

Manifest

Dit zijn de ondersteunde sleutels voor "content_scripts" . Alleen de sleutel "matches" en "js" of "css" zijn vereist.

manifest.json

{
 "name": "My extension",
 ...
 "content_scripts": [
   {
     "matches": ["https://*.example.com/*"],
     "css": ["my-styles.css"],
     "js": ["content-script.js"],
     "exclude_matches": ["*://*/*foo*"],
     "include_globs": ["*example.com/???s/*"],
     "exclude_globs": ["*bar*"],     
     "all_frames": false,
     "match_origin_as_fallback": false,
     "match_about_blank": false,
     "run_at": "document_idle",
     "world": "ISOLATED",
   }
 ],
 ...
}

Bestanden

Elk bestand moet een relatief pad bevatten naar een bron in de hoofdmap van de extensie. Schuine strepen ( / ) worden automatisch bijgesneden. De "run_at" -sleutel specificeert wanneer elk bestand zal worden geïnjecteerd.

"css" - Array
Optioneel . Een array van CSS-bestandspaden, geïnjecteerd in de volgorde van deze array, en voordat er DOM-constructie of paginaweergave plaatsvindt.
"js" - Array,
Optioneel . Een array van JavaScript-bestandspaden, geïnjecteerd in de volgorde waarin ze in deze array verschijnen, nadat CSS-bestanden zijn geïnjecteerd. Elke tekenreeks in de array moet een relatief pad zijn naar een bron in de hoofdmap van de extensie. Voorloopslashes ('/') worden automatisch bijgesneden.

Match URL's

Alleen de eigenschap "matches" is vereist. Vervolgens kunt u "exclude_matches" , "include_globs" en "exclude_globs" gebruiken om aan te passen in welke URL's code moet worden geïnjecteerd. De "matches" -toets activeert een waarschuwing .

"matches" - Array
Vereist . Specificeert in welke URL-patronen de inhoudsscripts moeten worden geïnjecteerd. Zie Matchpatronen voor syntaxis.
"exclude_matches" - Array
Optioneel . Exclusief de URL-patronen waarin de inhoudsscripts moeten worden geïnjecteerd. Zie Matchpatronen voor syntaxis.
"include_globs" - Array
Optioneel . Toegepast na overeenkomsten om alleen die URL's op te nemen die ook overeenkomen met deze glob. Bedoeld om het trefwoord @include Greasemonkey te emuleren.
"exclude_globs" - Array
Optioneel . Toegepast na overeenkomsten om URL's uit te sluiten die overeenkomen met deze glob. Bedoeld om het trefwoord @exclude Greasemonkey te emuleren.

Glob-URL's zijn URL's die "jokertekens" * en vraagtekens bevatten. Het jokerteken * komt overeen met elke tekenreeks van elke lengte, inclusief een lege tekenreeks, terwijl het vraagteken ? komt overeen met elk afzonderlijk teken.

Het inhoudsscript wordt in een pagina geïnjecteerd als:

  • De URL komt overeen met alle patronen "matches" en "include_globs" .
  • En de URL komt niet overeen met de patronen "exclude_matches" of "exclude_globs" .

Voorbeelden van globs en URL-overeenkomsten

"include_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["https://???.example.com/foo/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Wedstrijden
https://www.example.com/foo/bar
https://the.example.com/foo/
Komt niet overeen
https://my.example.com/foo/bar
https://example.com/foo/*
https://www.example.com/foo

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["*example.com/???s/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Wedstrijden
https://www.example.com/arts/index.html
https://www.example.com/jobs/index.html
Komt niet overeen
https://www.example.com/sports/index.html
https://www.example.com/music/index.html

"exclude_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Wedstrijden
https://history.example.com
https://.example.com/music
Komt niet overeen
https://science.example.com
https://www.example.com/science

Voorbeeld van geavanceerd maatwerk

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_matches": ["*://*/*business*"],
      "include_globs": ["*example.com/???s/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Wedstrijden
https://www.example.com/arts/index.html
https://.example.com/jobs/index.html
Komt niet overeen
https://science.example.com
https://www.example.com/jobs/business
https://www.example.com/science

Lijsten

De sleutel "all_frames" geeft aan of het inhoudsscript moet worden geïnjecteerd in alle frames die overeenkomen met de opgegeven URL-vereisten. Indien ingesteld op false wordt alleen in het bovenste frame geïnjecteerd. Het kan samen met "match_about_blank" worden gebruikt om in een about:blank frame te injecteren.

Om in andere frames zoals data: , blob: en filesystem: te injecteren, stelt u "match_origin_as_fallback" in op true . Zie Injecteren in gerelateerde frames voor meer informatie

"all_frames" Booleaanse waarde
Optioneel . Standaard ingesteld op false , wat betekent dat alleen het bovenste frame overeenkomt. Indien ingesteld op true, wordt dit in alle frames geïnjecteerd, zelfs als het frame niet het bovenste frame op het tabblad is. Elk frame wordt afzonderlijk gecontroleerd op URL-vereisten. Het wordt niet in onderliggende frames geïnjecteerd als niet aan de URL-vereisten wordt voldaan.
"match_about_blank" - Booleaanse waarde
Optioneel . Standaard ingesteld op false . Of het script moet worden geïnjecteerd in een about:blank frame waarin de bovenliggende URL overeenkomt met een van de patronen die zijn gedeclareerd in "matches" .
"match_origin_as_fallback" - Booleaanse waarde
Optioneel . Standaard ingesteld op false . Of het script moet worden geïnjecteerd in frames die zijn gemaakt door een overeenkomende oorsprong, maar waarvan de URL of oorsprong mogelijk niet direct overeenkomt met het patroon. Deze omvatten frames met verschillende schema's, zoals about: , data: , blob: en filesystem: .

Runtime en uitvoeringsomgeving

Standaard worden inhoudsscripts geïnjecteerd wanneer het document en alle bronnen zijn geladen, en bevinden ze zich in een geïsoleerde privé-uitvoeringsomgeving die niet toegankelijk is voor de pagina of andere extensies. U kunt deze standaardwaarden wijzigen met de volgende toetsen:

"run_at" - document_start | document_end | document_idle
Optioneel . Specificeert wanneer het script in de pagina moet worden geïnjecteerd. Het komt overeen met de laadstatussen van Document.readyState :
  • "document_start" : de DOM wordt nog steeds geladen.
  • "document_end" : de bronnen van de pagina worden nog steeds geladen
  • "document_idle" : de DOM en bronnen zijn geladen. Dit is de standaardinstelling.
"world" - ISOLATED | MAIN
Optioneel . De JavaScript-wereld waarin een script kan worden uitgevoerd. Standaard ingesteld op "ISOLATED" , wat de uitvoeringsomgeving is die uniek is voor het inhoudsscript. Als u de "MAIN" -wereld kiest, betekent dit dat het script de uitvoeringsomgeving deelt met het JavaScript van de hostpagina. Zie Werken in geïsoleerde werelden voor meer informatie.

Voorbeeld

Zie de handleiding Uitvoeren op elke pagina om een ​​extensie te bouwen die een inhoudsscript in het manifest injecteert.