Vernieuwingsdatum: 2026-09-25 robots: noindex
Beschrijving
Gebruik de chrome.declarativeContent API om acties uit te voeren op basis van de inhoud van een pagina, zonder dat er toestemming nodig is om de inhoud van de pagina te lezen.
Toestemmingen
declarativeContentGebruik
Met de Declarative Content API kunt u de werking van uw extensie inschakelen op basis van de URL van een webpagina, of als een CSS-selector overeenkomt met een element op de pagina, zonder dat u hostrechten hoeft toe te voegen of een contentscript hoeft te injecteren.
Gebruik de activeTab- machtiging om met een pagina te interageren nadat de gebruiker op de actie van de extensie heeft geklikt.
Regels
Regels bestaan uit voorwaarden en acties. Als aan een van de voorwaarden is voldaan, worden alle acties uitgevoerd. De acties zijn setIcon en showAction .
De PageStateMatcher komt alleen overeen met webpagina's als aan alle vermelde criteria wordt voldaan. Het kan overeenkomen met een pagina-URL , een CSS-selector of de status van een pagina als bladwijzer . De volgende regel activeert de werking van de extensie op Google-pagina's wanneer er een wachtwoordveld aanwezig is:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Om de extensie ook te laten werken op Google Sites met een video, kunt u een tweede voorwaarde toevoegen. Elke voorwaarde is namelijk voldoende om alle opgegeven acties te activeren:
let rule2 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
}),
new chrome.declarativeContent.PageStateMatcher({
css: ["video"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
De onPageChanged gebeurtenis controleert of een regel ten minste één vervulde voorwaarde heeft en voert de bijbehorende acties uit. Regels blijven behouden tussen browsersessies; daarom moet u tijdens de installatie van een extensie eerst removeRules gebruiken om eerder geïnstalleerde regels te verwijderen en vervolgens addRules gebruiken om nieuwe regels te registreren.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
Met de activeTab- machtiging zal uw extensie geen waarschuwingen over machtigingen weergeven en zal de extensie, wanneer de gebruiker erop klikt, alleen op relevante pagina's worden uitgevoerd.
Pagina-URL-overeenkomst
De PageStateMatcher.pageurl komt overeen wanneer aan de URL-criteria wordt voldaan. De meest voorkomende criteria zijn een samenvoeging van host, pad of url, gevolgd door Contains, Equals, Prefix of Suffix. De volgende tabel bevat enkele voorbeelden:
| Criteria | Wedstrijden |
|---|---|
{ hostSuffix: 'google.com' } | Alle Google-URL's |
{ pathPrefix: '/docs/extensions' } | URL's van de extensiedocumentatie |
{ urlContains: 'developer.chrome.com' } | Alle URL's van de Chrome-ontwikkelaarsdocumentatie |
Alle criteria zijn hoofdlettergevoelig. Voor een volledige lijst met criteria, zie UrlFilter .
CSS-matching
De voorwaarden PageStateMatcher.css moeten samengestelde selectors zijn, wat betekent dat je geen combinaties zoals spaties of " > " in je selectors mag opnemen. Dit helpt Chrome om de selectors efficiënter te matchen.
| Samengestelde selectoren (OK) | Complexe selectors (niet toegestaan) |
|---|---|
a | div p |
iframe.special[src^='http'] | p>span.highlight |
ns|* | p + ol |
#abcd:checked | p::first-line |
CSS-voorwaarden komen alleen overeen met weergegeven elementen: als een element dat overeenkomt met je selector display:none , of als een van de bovenliggende elementen display:none heeft, zorgt dit er niet voor dat de voorwaarde wordt voldaan. Elementen met visibility:hidden , elementen die buiten beeld zijn gepositioneerd of elementen die door andere elementen worden verborgen, kunnen er nog steeds voor zorgen dat je voorwaarde wordt voldaan.
Opgeslagen staatsovereenkomst
De voorwaarde PageStateMatcher.isBookmarked maakt het mogelijk om de status van de huidige URL als bladwijzer in het gebruikersprofiel te controleren. Om van deze voorwaarde gebruik te kunnen maken, moet de "bookmarks"-toestemming in het extensiemanifest worden gedeclareerd.
Soorten
ImageDataType
Zie https://developer.mozilla.org/en-US/docs/Web/API/ImageData .
Type
Afbeeldingsgegevens
PageStateMatcher
Vergelijkt de status van een webpagina op basis van verschillende criteria.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: PageStateMatcher) => {...}
- argument
- retourneert
- css
string[] optioneel
Er wordt een match gevonden als alle CSS-selectors in de array overeenkomen met weergegeven elementen in een frame met dezelfde oorsprong als het hoofdframe van de pagina. Alle selectors in deze array moeten samengestelde selectors zijn om het matchen te versnellen. Let op: het weergeven van honderden CSS-selectors of het weergeven van CSS-selectors die honderden keren per pagina overeenkomen, kan websites vertragen.
- isBookmarked
boolean optioneel
Chrome 45+Komt overeen als de status van de pagina als bladwijzer gelijk is aan de opgegeven waarde. Vereist de bladwijzermachtiging .
- paginaUrl
UrlFilter optioneel
Komt overeen als aan de voorwaarden van het
UrlFilteris voldaan voor de URL op het hoogste niveau van de pagina.
RequestContentScript
Declaratieve gebeurtenisactie die een inhoudsscript injecteert.
WAARSCHUWING: Deze functie is nog experimenteel en wordt niet ondersteund in stabiele versies van Chrome.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RequestContentScript) => {...}
- argument
- retourneert
- alleFrames
boolean optioneel
Of het contentscript in alle frames van de betreffende pagina wordt uitgevoerd, of alleen in het bovenste frame. De standaardwaarde is
false. - css
string[] optioneel
Namen van CSS-bestanden die als onderdeel van het contentscript moeten worden ingevoegd.
- js
string[] optioneel
Namen van JavaScript-bestanden die als onderdeel van het contentscript moeten worden geïnjecteerd.
- matchAboutBlank
boolean optioneel
Of het inhoudsscript moet worden ingevoegd bij
about:blankenabout:srcdoc. De standaardwaarde isfalse.
SetIcon
Een declaratieve gebeurtenisactie die het n-dip vierkante pictogram instelt voor de pagina-actie of browseractie van de extensie, zolang aan de bijbehorende voorwaarden wordt voldaan. Deze actie kan worden gebruikt zonder hostrechten , maar de extensie moet wel een pagina- of browseractie hebben.
Precies één van de twee opties moet worden opgegeven: imageData of path . Beide zijn woordenboeken die een aantal pixels koppelen aan een afbeeldingsrepresentatie. De afbeeldingsrepresentatie in imageData is een ImageData- object, bijvoorbeeld van een canvas element, terwijl de afbeeldingsrepresentatie in path het pad is naar een afbeeldingsbestand ten opzichte van het manifest van de extensie. Als scale schermpixels passen binnen een apparaatonafhankelijke pixel, wordt het scale * n gebruikt. Als die schaal ontbreekt, wordt een andere afbeelding aangepast aan de vereiste grootte.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: SetIcon) => {...}
- argument
- retourneert
- beeldgegevens
ImageData | object optioneel
Ofwel een
ImageDataobject, ofwel een dictionary {size -> ImageData} die een in te stellen pictogram vertegenwoordigt. Als het pictogram als een dictionary wordt opgegeven, wordt de gebruikte afbeelding gekozen op basis van de pixeldichtheid van het scherm. Als het aantal afbeeldingspixels dat in één schermruimte-eenheid past gelijk is aanscale, wordt een afbeelding met de groottescale * ngeselecteerd, waarbij n de grootte van het pictogram in de gebruikersinterface is. Er moet ten minste één afbeelding worden opgegeven. Merk op datdetails.imageData = foogelijk is aandetails.imageData = {'16': foo}.
ShowAction
Een declaratieve gebeurtenisactie die de werkbalkactie van de extensie inschakelt zolang aan de bijbehorende voorwaarden is voldaan. Deze actie kan worden gebruikt zonder hostrechten . Als de extensie de machtiging activeTab heeft, geeft het klikken op de pagina-actie toegang tot het actieve tabblad.
Op pagina's waar niet aan de voorwaarden wordt voldaan, wordt de actie in de werkbalk van de extensie in grijs weergegeven en wordt bij een klik erop het contextmenu geopend in plaats van de actie te activeren.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: ShowAction) => {...}
- argument
- retourneert
ShowPageAction
Gebruik declarativeContent.ShowAction .
Een declaratieve gebeurtenisactie die de pagina-actie van de extensie inschakelt wanneer aan de bijbehorende voorwaarden is voldaan. Deze actie kan worden gebruikt zonder hostrechten , maar de extensie moet wel een pagina-actie hebben. Als de extensie de machtiging activeTab heeft, geeft het klikken op de pagina-actie toegang tot het actieve tabblad.
Op pagina's waar niet aan de voorwaarden wordt voldaan, wordt de actie in de werkbalk van de extensie in grijs weergegeven en wordt bij een klik erop het contextmenu geopend in plaats van de actie te activeren.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: ShowPageAction) => {...}
- argument
- retourneert
Evenementen
onPageChanged
Biedt de Declarative Event API, bestaande uit addRules , removeRules en getRules .