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"]
}
],
...
}
https://www.example.com/foo/bar https://the.example.com/foo/
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"]
}
],
...
}
https://www.example.com/arts/index.html https://www.example.com/jobs/index.html
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"]
}
],
...
}
https://history.example.com https://.example.com/music
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"]
}
],
...
}
https://www.example.com/arts/index.html https://.example.com/jobs/index.html
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 eenabout: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, zoalsabout:
,data:
,blob:
enfilesystem:
.
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.