Beschrijving
Gebruik de chrome.contentSettings API om instellingen te wijzigen die bepalen of websites functies zoals cookies, JavaScript en plug-ins mogen gebruiken. Meer in het algemeen kunt u met inhoudsinstellingen het gedrag van Chrome per website aanpassen in plaats van globaal.
Toestemmingen
contentSettingsManifest
Om de API te kunnen gebruiken, moet u de machtiging "contentSettings" in het manifest van uw extensie declareren. Bijvoorbeeld:
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
Content setting patronen
Je kunt patronen gebruiken om de websites te specificeren waarop elke inhoudsinstelling van toepassing is. Bijvoorbeeld, https://*.youtube.com/* specificeert youtube.com en al zijn subdomeinen. De syntaxis voor patronen voor inhoudsinstellingen is hetzelfde als voor overeenkomstpatronen , met een paar verschillen:
- Voor
http,httpsenftp-URL's moet het pad een wildcard (/*) bevatten. VoorfileURL's moet het pad volledig worden opgegeven en mag het geen wildcards bevatten. - In tegenstelling tot matchpatronen kunnen content setting-patronen een poortnummer specificeren. Als een poortnummer is opgegeven, komt het patroon alleen overeen met websites die die poort gebruiken. Als er geen poortnummer is opgegeven, komt het patroon overeen met alle poorten.
Patroonprioriteit
Wanneer er meer dan één inhoudsinstellingsregel van toepassing is op een bepaalde site, heeft de regel met het meest specifieke patroon voorrang.
De volgende patronen zijn bijvoorbeeld gerangschikt op prioriteit:
-
https://www.example.com/* -
https://*.example.com/*(komt overeen met example.com en alle subdomeinen) -
<all_urls>(komt overeen met elke URL)
Drie soorten jokers beïnvloeden hoe specifiek een patroon is:
- Jokertekens in de poort (bijvoorbeeld
https://www.example.com:*/*) - Jokertekens in het schema (bijvoorbeeld
*://www.example.com:123/*) - Jokertekens in de hostnaam (bijvoorbeeld
https://*.example.com:123/*)
Als een patroon in één onderdeel specifieker is dan een ander patroon, maar in een ander onderdeel minder specifiek, worden de verschillende onderdelen in de volgende volgorde gecontroleerd: hostnaam, schema, poort. De volgende patronen worden bijvoorbeeld in volgorde van prioriteit weergegeven:
-
https://www.example.com:*/*Specificeert de hostnaam en het schema. -
*:/www.example.com:123/*Niet zo hoog, omdat het weliswaar de hostnaam specificeert, maar niet het schema. -
https://*.example.com:123/*Lager, omdat hoewel de poort en het schema worden gespecificeerd, er een wildcard in de hostnaam staat.
Primaire en secundaire patronen
De URL die wordt gebruikt bij het bepalen welke inhoudsinstelling moet worden toegepast, hangt af van het type inhoud. Bijvoorbeeld, voor contentSettings.notifications zijn de instellingen gebaseerd op de URL die in de omnibox wordt weergegeven. Deze URL wordt de 'primaire' URL genoemd.
Sommige contenttypen kunnen rekening houden met aanvullende URL's. Of een site bijvoorbeeld een contentSettings.cookies mag instellen, wordt bepaald op basis van de URL van het HTTP-verzoek (in dit geval de primaire URL) en de URL die in de adresbalk wordt weergegeven (de zogenaamde secundaire URL).
Als meerdere regels een primair en een secundair patroon hebben, heeft de regel met het meest specifieke primaire patroon voorrang. Als meerdere regels hetzelfde primaire patroon hebben, heeft de regel met het meest specifieke secundaire patroon voorrang. De volgende lijst met paren van primaire en secundaire patronen is bijvoorbeeld gesorteerd op voorrang:
| Voorrang | Primair patroon | Secundair patroon |
|---|---|---|
| 1 | https://www.moose.com/* , | https://www.wombat.com/* |
| 2 | https://www.moose.com/* , | <all_urls> |
| 3 | <all_urls> , | https://www.wombat.com/* |
| 4 | <all_urls> , | <all_urls> |
Resource-identificaties
Met resource-identificaties kunt u inhoudsinstellingen specificeren voor specifieke subtypes van een inhoudstype. Momenteel is contentSettings.plugins het enige inhoudstype dat resource-identificaties ondersteunt. Hierbij identificeert een resource-identificatie een specifieke plugin. Bij het toepassen van inhoudsinstellingen worden eerst de instellingen voor de specifieke plugin gecontroleerd. Als er geen instellingen voor de specifieke plugin worden gevonden, worden de algemene inhoudsinstellingen voor plugins gecontroleerd.
Als een regel voor inhoudsinstellingen bijvoorbeeld de resource-ID adobe-flash-player en het patroon <all_urls> bevat, heeft deze voorrang op een regel zonder resource-ID en met het patroon https://www.example.com/* , zelfs als dat patroon specifieker is.
Je kunt een lijst met resource-ID's voor een contenttype verkrijgen door de methode contentSettings.ContentSetting.getResourceIdentifiers aan te roepen. De geretourneerde lijst kan veranderen afhankelijk van de geïnstalleerde plug-ins op de computer van de gebruiker, maar Chrome probeert de ID's stabiel te houden bij plug-in-updates.
Voorbeelden
Om deze API uit te proberen, installeer je het contentSettings API-voorbeeld uit de chrome-extension-samples repository.
Soorten
AutoVerifyContentSetting
Enum
"toestaan" "blok"
CameraContentSetting
Enum
"toestaan" "blok" "vragen"
ClipboardContentSetting
Enum
"toestaan" "blok" "vragen"
ContentSetting
Eigenschappen
- duidelijk
leegte
BelofteVerwijder alle inhoudsinstellingenregels die door deze extensie zijn ingesteld.
De
clearziet er als volgt uit:(details: object, callback?: function) => {...}
- details
voorwerp
- domein
Bereik optioneel
Waar de instelling te wissen (standaard: normaal).
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:() => void
- retourneert
Promise<void>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
- krijgen
leegte
BelofteGeeft de huidige inhoudsinstellingen weer voor een gegeven paar URL's.
De
get-functie ziet er als volgt uit:(details: object, callback?: function) => {...}
- details
voorwerp
- incognito
boolean optioneel
Of de inhoudsinstellingen voor een incognitosessie gecontroleerd moeten worden. (standaard: false)
- primaireUrl
snaar
De primaire URL waarvoor de inhoudsinstellingen moeten worden opgehaald. Houd er rekening mee dat de betekenis van een primaire URL afhangt van het inhoudstype.
- resourceIdentifier
ResourceIdentifier (optioneel)
Een meer specifieke aanduiding van het type inhoud waarvoor de instellingen moeten worden opgehaald.
- secundaireUrl
string optioneel
De secundaire URL waarvoor de inhoudsinstellingen moeten worden opgehaald. Standaard is dit de primaire URL. Houd er rekening mee dat de betekenis van een secundaire URL afhangt van het inhoudstype en dat niet alle inhoudstypen secundaire URL's gebruiken.
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(details: object) => void
- details
voorwerp
- instelling
T
De inhoudsinstelling. Zie de beschrijving van de afzonderlijke ContentSetting-objecten voor de mogelijke waarden.
- retourneert
Promise<object>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
- getResourceIdentifiers
leegte
BelofteDe functie
getResourceIdentifiersziet er als volgt uit:(callback?: function) => {...}
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(resourceIdentifiers?: ResourceIdentifier[]) => void
- bronidentificaties
ResourceIdentifier [] optioneel
Een lijst met resource-identificaties voor dit inhoudstype, of
undefinedals dit inhoudstype geen resource-identificaties gebruikt.
- retourneert
Promise< ResourceIdentifier []>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
- set
leegte
BeloftePast een nieuwe regel voor inhoudsinstellingen toe.
De
setziet er als volgt uit:(details: object, callback?: function) => {...}
- details
voorwerp
- primair patroon
snaar
Het patroon voor de primaire URL. Zie 'Patronen voor inhoudsinstellingen' voor meer informatie over de opmaak van een patroon.
- resourceIdentifier
ResourceIdentifier (optioneel)
De resource-identifier voor het contenttype.
- domein
Bereik optioneel
Waar moet de instelling worden ingesteld (standaard: normaal).
- secundair patroon
string optioneel
Het patroon voor de secundaire URL. Standaard worden alle URL's gematcht. Zie 'Patronen voor inhoudsinstellingen' voor meer informatie over de indeling van een patroon.
- instelling
elk
De instelling die door deze regel wordt toegepast. Zie de beschrijving van de afzonderlijke ContentSetting-objecten voor de mogelijke waarden.
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:() => void
- retourneert
Promise<void>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
CookiesContentSetting
Enum
"toestaan" "blok" "alleen-sessie"
FullscreenContentSetting
Waarde
"toestaan"
ImagesContentSetting
Enum
"toestaan" "blok"
JavascriptContentSetting
Enum
"toestaan" "blok"
LocationContentSetting
Enum
"toestaan" "blok" "vragen"
MicrophoneContentSetting
Enum
"toestaan" "blok" "vragen"
MouselockContentSetting
Waarde
"toestaan"
MultipleAutomaticDownloadsContentSetting
Enum
"toestaan" "blok" "vragen"
NotificationsContentSetting
Enum
"toestaan" "blok" "vragen"
PluginsContentSetting
Waarde
"blok"
PopupsContentSetting
Enum
"toestaan" "blok"
PpapiBrokerContentSetting
Waarde
"blok"
ResourceIdentifier
Het enige inhoudstype dat gebruikmaakt van resource-identificaties is contentSettings.plugins . Zie Resource-identificaties voor meer informatie.
Eigenschappen
- beschrijving
string optioneel
Een voor mensen leesbare beschrijving van de bron.
- id
snaar
De resource-identificatiecode voor het betreffende contenttype.
Scope
Het bereik van de ContentSetting. Een van de volgende: regular : instelling voor het reguliere profiel (die wordt overgenomen door het incognito-profiel als deze niet elders wordt overschreven), incognito\_session\_only : instelling voor het incognito-profiel die alleen tijdens een incognito-sessie kan worden ingesteld en wordt verwijderd wanneer de incognito-sessie eindigt (overschrijft reguliere instellingen).
Enum
"normaal" "alleen incognito-sessie"
SoundContentSetting
Enum
"toestaan" "blok"
Eigenschappen
automaticDownloads
Of sites meerdere bestanden automatisch mogen downloaden. Een van de allow : toestaan: sites toestaan meerdere bestanden automatisch te downloaden, block : sites niet toestaan meerdere bestanden automatisch te downloaden, ask : vragen wanneer een site bestanden automatisch wil downloaden na het eerste bestand. De standaardinstelling is ask . De primaire URL is de URL van het frame op het hoogste niveau. De secundaire URL wordt niet gebruikt.
Type
Inhoudsinstelling < Inhoudsinstelling voor meerdere automatische downloads >
autoVerify
Of sites de Private State Tokens API mogen gebruiken. Een van de volgende opties is: allow : sites mogen de Private State Tokens API gebruiken, block : sites mogen de Private State Tokens API niet gebruiken. De standaardwaarde is allow . Bij het aanroepen van set() moet het primaire URL-patroon <all_urls> zijn. De secundaire URL wordt niet gebruikt.
Type
camera
Of websites toegang tot de camera mogen krijgen. Een van de allow : toestaan: websites toegang geven tot de camera, block : websites geen toegang geven tot de camera, ask : vragen wanneer een website toegang tot de camera wil. De standaardinstelling is ask . De primaire URL is de URL van het document dat toegang tot de camera heeft aangevraagd. De secundaire URL wordt niet gebruikt. LET OP: De instelling 'toestaan' is niet geldig als beide patronen '<alle_urls>' zijn.
Type
clipboard
Of sites toegang mogen krijgen tot het klembord via geavanceerde mogelijkheden van de Async Clipboard API. "Geavanceerde" mogelijkheden omvatten alles behalve het schrijven van ingebouwde formaten na een gebruikersactie, zoals lezen, schrijven en schrijven zonder gebruikersactie. Een van de volgende opties is: allow : Sta sites toe geavanceerde klembordmogelijkheden te gebruiken, block : Sta sites niet toe geavanceerde klembordmogelijkheden te gebruiken, ask : Vraag wanneer een site geavanceerde klembordmogelijkheden wil gebruiken. De standaardwaarde is ask . De primaire URL is de URL van het document dat klembordtoegang heeft aangevraagd. De secundaire URL wordt niet gebruikt.
Type
cookies
Of het toegestaan is om cookies en andere lokale gegevens door websites te plaatsen. Een van de allow : toestaan: cookies accepteren, block : cookies blokkeren, session\_only : cookies alleen accepteren voor de huidige sessie. De standaardwaarde is allow . De primaire URL is de URL die de oorsprong van de cookie vertegenwoordigt. De secundaire URL is de URL van het frame op het hoogste niveau.
fullscreen
Verouderd. Heeft geen effect meer. De toestemming voor volledig scherm wordt nu automatisch verleend voor alle sites. De waarde is altijd allow .
Type
images
Of afbeeldingen moeten worden weergegeven. Een van de allow : afbeeldingen weergeven, block : afbeeldingen niet weergeven. De standaardinstelling is ' allow . De primaire URL is de URL van het frame op het hoogste niveau. De secundaire URL is de URL van de afbeelding.
Type
javascript
Of JavaScript moet worden uitgevoerd. Een van de opties is allow : JavaScript uitvoeren, block : JavaScript niet uitvoeren. De standaardwaarde is allow . De primaire URL is de URL van het frame op het hoogste niveau. De secundaire URL wordt niet gebruikt.
Type
location
Of geolocatie is toegestaan. Een van de allow is: toestaan: websites toestaan uw fysieke locatie te volgen, block : websites niet toestaan uw fysieke locatie te volgen, ask : vragen voordat websites toestemming krijgen om uw fysieke locatie te volgen. De standaardinstelling is ask . De primaire URL is de URL van het document dat locatiegegevens heeft opgevraagd. De secundaire URL is de URL van het frame op het hoogste niveau (die al dan niet kan verschillen van de aanvragende URL).
Type
microphone
Of sites toegang mogen krijgen tot de microfoon. Een van de allow : toestaan: sites toegang geven tot de microfoon, block : sites geen toegang geven tot de microfoon, ask : vragen wanneer een site toegang tot de microfoon wil. De standaardinstelling is ask . De primaire URL is de URL van het document dat toegang tot de microfoon heeft aangevraagd. De secundaire URL wordt niet gebruikt. LET OP: De instelling 'toestaan' is niet geldig als beide patronen '<alle_urls>' zijn.
Type
mouselock
Verouderd. Heeft geen effect meer. De muisvergrendelingsmachtiging wordt nu automatisch verleend voor alle sites. De waarde is altijd allow .
Type
notifications
Of sites bureaubladmeldingen mogen weergeven. Een van de allow : toestaan: sites mogen bureaubladmeldingen weergeven, block : sites mogen geen bureaubladmeldingen weergeven, ask : vragen wanneer een site bureaubladmeldingen wil weergeven. De standaardinstelling is ask . De primaire URL is de URL van het document dat de melding moet weergeven. De secundaire URL wordt niet gebruikt.
plugins
Verouderd. Nu Flash-ondersteuning is verwijderd in Chrome 88, heeft deze toestemming geen effect meer. De waarde is altijd block . Aanroepen naar set() en clear() worden genegeerd.
Type
popups
Of pop-ups op websites toegestaan moeten worden. Eén van de opties allow ': pop-ups weergeven, block : pop-ups niet weergeven. De standaardinstelling is block . De primaire URL is de URL van het frame op het hoogste niveau. De secundaire URL wordt niet gebruikt.
Type
unsandboxedPlugins
Verouderd. Voorheen bepaalde deze instelling of sites plug-ins zonder sandbox mochten uitvoeren. Echter, nu het Flash-brokerproces in Chrome 88 is verwijderd, heeft deze toestemming geen effect meer. De waarde is altijd block . Aanroepen naar set() en clear() worden genegeerd.