Beschreibung
Mit der chrome.declarativeContent
API kannst du je nach Inhalt einer Seite Aktionen ausführen, ohne dass eine Berechtigung zum Lesen des Seiteninhalts erforderlich ist.
Berechtigungen
declarativeContent
Konzepte und Verwendung
Mit der Declarative Content API können Sie die Aktion Ihrer Erweiterung abhängig von der URL einer oder wenn ein CSS-Selektor mit einem Element auf der Seite übereinstimmt, ohne Hostberechtigungen hinzufügen oder ein Inhaltsskript einfügen
Verwenden Sie die Berechtigung activeTab, um mit einer Seite zu interagieren, nachdem der Nutzer auf die Aktion der Erweiterung ausführen.
Regeln
Regeln bestehen aus Bedingungen und Aktionen. Wenn eine der Bedingungen erfüllt ist, werden alle Aktionen
ausgeführt haben. Die Aktionen sind setIcon()
und showAction()
.
Die PageStateMatcher
stimmt nur dann mit Webseiten überein, wenn alle aufgeführten
Kriterien erfüllt sind. Er kann mit einer Seiten-URL, einem zusammengesetzten CSS-Selektor übereinstimmen
oder den Lesezeichenstatus einer Seite. Mit der folgenden Regel
Aktion der Erweiterung auf Google-Seiten, wenn ein Passwortfeld vorhanden ist:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Um die Aktion der Erweiterung auch für Google-Websites mit einem Video zu aktivieren, können Sie ein zweites enthalten, da jede Bedingung ausreicht, um alle angegebenen Aktionen auszulösen:
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() ]
};
Mit dem Ereignis onPageChanged
wird getestet, ob für eine Regel mindestens eine erfüllt ist
und führt die Aktionen aus. Die Regeln bleiben über mehrere Browsersitzungen hinweg erhalten. daher während
Die Installationsdauer der Erweiterung sollten Sie zuerst mit removeRules
löschen
zuvor installierten Regeln und verwenden Sie dann addRules
, um neue zu registrieren.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
Mit der Berechtigung activeTab zeigt Ihre Erweiterung keine Berechtigung an Warnungen aus. Wenn der Nutzer auf die Erweiterungsaktion klickt, wird sie nur auf relevanten Seiten ausgeführt.
Seiten-URL-Abgleich
Die PageStateMatcher.pageurl
stimmt überein, wenn die URL-Kriterien erfüllt sind. Die
Die häufigsten Kriterien sind die Verkettung von Host, Pfad oder URL gefolgt von "Enthält", "Ist gleich", "Präfix" oder
Suffix. Die folgende Tabelle enthält einige Beispiele:
Kriterien | Übereinstimmungen |
---|---|
{ hostSuffix: 'google.com' } |
Alle Google-URLs |
{ pathPrefix: '/docs/extensions' } |
Erweiterungsdokumente – URLs |
{ urlContains: 'developer.chrome.com' } |
URLs aller Chrome-Entwicklerdokumentationen |
Bei allen Kriterien wird zwischen Groß- und Kleinschreibung unterschieden. Eine vollständige Liste der Kriterien finden Sie unter UrlFilter.
CSS-Abgleich
PageStateMatcher.css
-Bedingungen müssen zusammengesetzte Selektoren sein.
Das heißt, Sie können keine Kombinatoren wie Leerzeichen oder ">
" verwenden. in deinem
Selektoren. So kann Chrome die Selektoren effizienter zuordnen.
Zusammengesetzte Auswahlmöglichkeiten (OK) | Komplexe Selektoren (nicht zulässig) |
---|---|
a |
div p |
iframe.special[src^='http'] |
p>span.highlight |
ns|* |
p + ol |
#abcd:checked |
p::first-line |
CSS-Bedingungen stimmen nur mit angezeigten Elementen überein: Wenn ein Element, das mit Ihrem Selektor übereinstimmt,
display:none
oder eines seiner übergeordneten Elemente display:none
ist, bewirkt dies nicht, dass die Bedingung
Übereinstimmung. Mit visibility:hidden
gestaltete Elemente, die sich außerhalb des sichtbaren Bereichs befinden oder von anderen Elementen ausgeblendet werden
damit Ihre Bedingung erfüllt werden kann.
Statusabgleich mit Lesezeichen
Die Bedingung PageStateMatcher.isBookmarked
ermöglicht den Abgleich von
der aktuellen URL im Nutzerprofil als Lesezeichen gespeichert. Um diese Bedingung zu nutzen,
"lesezeichen" Die Berechtigung muss im Manifest der Erweiterung deklariert werden.
Typen
ImageDataType
Weitere Informationen finden Sie unter https://developer.mozilla.org/en-US/docs/Web/API/ImageData.
Typ
ImageData
PageStateMatcher
Gleicht den Status einer Webseite anhand verschiedener Kriterien ab.
Attribute
-
Konstruktor
voidm
Die Funktion
constructor
sieht so aus: <ph type="x-smartling-placeholder"></ph>(arg: PageStateMatcher) => {...}
-
Argument
-
Gibt zurück
-
-
css
string[] optional
Stimmt überein, wenn alle CSS-Selektoren im Array mit angezeigten Elementen in einem Frame übereinstimmen, der denselben Ursprung wie der Hauptframe der Seite hat. Alle Selektoren in diesem Array müssen zusammengesetzte Selektoren sein, um den Abgleich zu beschleunigen. Hinweis: Wenn Sie Hunderte von CSS-Selektoren oder CSS-Selektoren auflisten, die hundertmal pro Seite übereinstimmen, kann dies die Leistung von Websites verlangsamen.
-
isBookmarked
Boolescher Wert optional
Chrome (ab Version 45)Gibt an, ob der Status der Seite als Lesezeichen dem angegebenen Wert entspricht. Erfordert die Berechtigung für Lesezeichen.
-
pageUrl
UrlFilter optional
Stimmt überein, wenn die Bedingungen von
UrlFilter
für die Top-Level-URL der Seite erfüllt sind.
RequestContentScript
Deklarative Ereignisaktion, die ein Inhaltsskript einschleust.
WARNUNG:Diese Aktion befindet sich noch in der Testphase und wird in stabilen Builds von Chrome nicht unterstützt.
Attribute
-
Konstruktor
voidm
Die Funktion
constructor
sieht so aus: <ph type="x-smartling-placeholder"></ph>(arg: RequestContentScript) => {...}
-
Argument
-
Gibt zurück
-
-
allFrames
Boolescher Wert optional
Gibt an, ob das Content-Skript in allen Frames der übereinstimmenden Seite oder nur im obersten Frame ausgeführt wird. Standardwert ist
false
. -
css
string[] optional
Namen von CSS-Dateien, die als Teil des Inhaltsskripts eingeschleust werden sollen.
-
JS
string[] optional
Namen von JavaScript-Dateien, die als Teil des Inhaltsskripts eingeschleust werden sollen.
-
matchAboutBlank
Boolescher Wert optional
Gibt an, ob das Inhaltsskript in
about:blank
undabout:srcdoc
eingefügt werden soll. Der Standardwert istfalse
.
SetIcon
Deklarative Ereignisaktion, bei der das quadratische „N-dip“-Symbol für die Seitenaktion oder Browseraktion der Erweiterung festgelegt wird, solange die entsprechenden Bedingungen erfüllt sind. Diese Aktion kann ohne Hostberechtigungen verwendet werden, aber die Erweiterung muss eine Seiten- oder Browseraktion enthalten.
Genau entweder imageData
oder path
muss angegeben werden. Beides sind Wörterbücher, die einer Bilddarstellung eine Anzahl von Pixeln zuordnen. Die Bilddarstellung in imageData
ist ein ImageData-Objekt. aus einem canvas
-Element, während die Bilddarstellung in path
der Pfad zu einer Bilddatei relativ zum Manifest der Erweiterung ist. Wenn Bildschirmpixel scale
in ein geräteunabhängiges Pixel passen, wird das Symbol scale * n
verwendet. Wenn dieser Maßstab fehlt, wird ein anderes Bild an die erforderliche Größe angepasst.
Attribute
-
Konstruktor
voidm
Die Funktion
constructor
sieht so aus: <ph type="x-smartling-placeholder"></ph>(arg: SetIcon) => {...}
-
Argument
-
Gibt zurück
-
-
imageData
ImageData | Objekt optional
Entweder ein
ImageData
-Objekt oder ein Wörterbuch {size -> ImageData}, die ein festzulegendes Symbol darstellen. Wenn das Symbol als Wörterbuch angegeben ist, wird das verwendete Bild abhängig von der Pixeldichte des Bildschirms ausgewählt. Wenn die Anzahl der Bildpixel, die in eine Bildschirmgröße passen,scale
entspricht, wird ein Bild mit der Größescale * n
ausgewählt, wobei n die Größe des Symbols in der Benutzeroberfläche ist. Es muss mindestens ein Bild angegeben werden.details.imageData = foo
entsprichtdetails.imageData = {'16': foo}
.
ShowAction
Eine deklarative Ereignisaktion, durch die die Aktion in der Symbolleiste der Erweiterung aktiviert wird, solange die entsprechenden Bedingungen erfüllt sind. Diese Aktion kann ohne Hostberechtigungen verwendet werden. Hat die Erweiterung die Berechtigung activeTab, wird durch Klicken auf die Seitenaktion der Zugriff auf den aktiven Tab gewährt.
Auf Seiten, auf denen die Bedingungen nicht erfüllt sind, wird die Symbolleiste der Erweiterung in Graustufen dargestellt. Wenn Sie darauf klicken, wird das Kontextmenü geöffnet, anstatt die Aktion auszulösen.
Attribute
-
Konstruktor
voidm
Die Funktion
constructor
sieht so aus: <ph type="x-smartling-placeholder"></ph>(arg: ShowAction) => {...}
-
Argument
-
Gibt zurück
-
ShowPageAction
Bitte verwende declarativeContent.ShowAction
.
Eine deklarative Ereignisaktion, durch die die Seitenaktion der Erweiterung aktiviert wird, während die entsprechenden Bedingungen erfüllt sind. Diese Aktion kann ohne Hostberechtigungen verwendet werden, aber die Erweiterung muss eine Seitenaktion enthalten. Hat die Erweiterung die Berechtigung activeTab, wird durch Klicken auf die Seitenaktion der Zugriff auf den aktiven Tab gewährt.
Auf Seiten, auf denen die Bedingungen nicht erfüllt sind, wird die Symbolleiste der Erweiterung in Graustufen dargestellt. Wenn Sie darauf klicken, wird das Kontextmenü geöffnet, anstatt die Aktion auszulösen.
Attribute
-
Konstruktor
voidm
Die Funktion
constructor
sieht so aus: <ph type="x-smartling-placeholder"></ph>(arg: ShowPageAction) => {...}
-
Argument
-
Gibt zurück
-
Ereignisse
onPageChanged
Stellt die Declarative Event API bereit, die aus addRules
, removeRules
und getRules
besteht.