chrome.declarativeContent

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

declarativeContent

Gebruik

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

Type

Afbeeldingsgegevens

PageStateMatcher

Vergelijkt de status van een webpagina op basis van verschillende criteria.

Eigenschappen

  • constructeur

    leegte

    De constructor ziet er als volgt uit:

    (arg: PageStateMatcher) => {...}

  • 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 UrlFilter is 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 constructor ziet er als volgt uit:

    (arg: RequestContentScript) => {...}

  • 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:blank en about:srcdoc . De standaardwaarde is false .

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 constructor ziet er als volgt uit:

    (arg: SetIcon) => {...}

  • beeldgegevens

    ImageData | object optioneel

    Ofwel een ImageData object, 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 aan scale , wordt een afbeelding met de grootte scale * n geselecteerd, waarbij n de grootte van het pictogram in de gebruikersinterface is. Er moet ten minste één afbeelding worden opgegeven. Merk op dat details.imageData = foo gelijk is aan details.imageData = {'16': foo} .

ShowAction

Chrome 97+

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

ShowPageAction

Niet meer gebruikt sinds Chrome 97

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

Evenementen

onPageChanged

Biedt de Declarative Event API, bestaande uit addRules , removeRules en getRules .

Voorwaarden