Manifest - content scripts

De sleutel "content_scripts" geeft een statisch geladen JavaScript- of css-bestand aan dat elke keer moet worden gebruikt als een pagina wordt geopend die overeenkomt met een bepaald URL-patroon. Extensies kunnen ook programmatisch contentscripts injecteren. Ga naar Scripts injecteren voor meer informatie.

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 root-map van de extensie. Voorloopslashes (/) worden automatisch verwijderd. De sleutel "run_at" geeft aan wanneer elk bestand wordt geïnjecteerd.

"css" - Matrix
Optioneel. Een array van css-bestandspaden, geïnjecteerd in de volgorde van deze array en voordat er een DOM-constructie of paginarendering plaatsvindt.
"js" - Matrix,
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 matrix moet een relatief pad zijn naar een bron in de root-map van de extensie. Voorloopslashes ('/') worden automatisch verwijderd.

URL's matchen

Alleen de property "matches" is vereist. Daarna kunt u "exclude_matches", "include_globs" en "exclude_globs" gebruiken om aan te passen in welke URL's u code wilt injecteren. De sleutel "matches" activeert een waarschuwing.

"matches" - Matrix
Vereist. Geeft aan in welke URL-patronen de contentscripts moeten worden geïnjecteerd. Zie Overeenkomstpatronen voor de syntaxis.
"exclude_matches" - Matrix
Optioneel. Sluit de URL-patronen uit waarin de contentscripts moeten worden geïnjecteerd. Zie Overeenkomstpatronen voor de syntaxis.
"include_globs" - Matrix
Optioneel. Wordt toegepast na overeenkomsten om alleen de URL's op te nemen die ook overeenkomen met deze glob. Bedoeld om het Greasemonkey-zoekwoord @include te emuleren.
"exclude_globs" - Matrix
Optioneel. Toegepast na overeenkomsten om URL's uit te sluiten die overeenkomen met deze glob. Bedoeld om het Greasemonkey-zoekwoord @exclude 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 contentscript wordt in een pagina geïnjecteerd als:

  • De URL komt overeen met de 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"]
    }
  ],
  ...
}
Combinaties
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"]
    }
  ],
  ...
}
Combinaties
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"]
    }
  ],
  ...
}
Combinaties
https://history.example.com
https://.example.com/music
Komt niet overeen
https://science.example.com
https://www.example.com/science

Voorbeeld van geavanceerde aanpassing

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_matches": ["*://*/*business*"],
      "include_globs": ["*example.com/???s/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Combinaties
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

Frames

De sleutel "all_frames" geeft aan of het contentscript moet worden geïnjecteerd in alle frames die overeenkomen met de opgegeven vereisten voor URL's. Als je deze instelt op false, wordt de extensie alleen geïnjecteerd in het bovenste frame. Deze kan samen met "match_about_blank" worden gebruikt om te injecteren in een about:blank-frame.

Als je wilt injecteren in andere frames, zoals data:, blob: en filesystem:, stel je de "match_origin_as_fallback" in op true. Ga naar Injecteren in gerelateerde frames voor meer informatie.

"all_frames" Booleaans
Optioneel. Standaard is dit false, wat betekent dat alleen het bovenste frame wordt gematcht. Als je dit instelt op True, wordt de extensie in alle frames geïnjecteerd, zelfs als het frame niet het bovenste frame op het tabblad is. Elk frame wordt onafhankelijk gecontroleerd op vereisten voor URL's. De extensie wordt niet geïnjecteerd in onderliggende frames als niet aan de vereisten voor URL's wordt voldaan.
"match_about_blank": Booleaans
Optioneel. De standaardwaarde is 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 gedefinieerd in "matches".
"match_origin_as_fallback" - Booleaans
Optioneel. De standaardwaarde is false. Of het script moet worden geïnjecteerd in frames die zijn gemaakt door een overeenkomende oorsprong, maar waarvan de URL of oorsprong misschien niet rechtstreeks overeenkomt met het patroon. Dit zijn onder andere frames met verschillende schema's, zoals about:, data:, blob: en filesystem:.

Runtime en uitvoeringsomgeving

Contentscripts worden standaard geïnjecteerd als het document en alle bronnen zijn geladen. Ze bevinden zich in een privé, geïsoleerde uitvoeringsomgeving die niet toegankelijk is voor de pagina of andere extensies. Je kunt deze standaardinstellingen wijzigen in de volgende sleutels:

"run_at" - document_start | document_end | document_idle
Optioneel. Geeft aan wanneer het script in de pagina moet worden geïnjecteerd. Deze komt overeen met de laadstatussen van Document.readyState:
  • "document_start": Het DOM wordt nog geladen.
  • "document_end": de bronnen van de pagina worden nog geladen
  • "document_idle": Het DOM en de bronnen zijn geladen. Dit is de standaardinstelling.
"world" - ISOLATED | MAIN
Optioneel. De JavaScript-wereld waarin een script moet worden uitgevoerd. De standaardinstelling is "ISOLATED", de uitvoeringsomgeving die uniek is voor het contentscript. Als je de wereld "MAIN" kiest, deelt het script de uitvoeringsomgeving met het JavaScript van de hostpagina. Ga naar Werken in geïsoleerde werelden voor meer informatie.

Voorbeeld

Bekijk de tutorial Uitvoeren op elke pagina om een extensie te maken die een contentscript in het manifest injecteert.