Opis
Interfejs API chrome.declarativeContent
umożliwia wykonywanie działań w zależności od treści strony bez wymagania uprawnień do jej odczytu.
Uprawnienia
declarativeContent
Pojęcia i wykorzystanie
Interfejs Deklaratywnej treści API umożliwia włączenie działania rozszerzenia w zależności od adresu URL lub jeśli selektor arkusza CSS pasuje do elementu na stronie, bez konieczności dodaj uprawnienia hosta lub wstaw skrypt treści.
Używaj uprawnienia activeTab, aby po kliknięciu przez użytkownika działania rozszerzenia.
Reguły
Reguły składają się z warunków i działań. Jeśli dowolny z warunków jest spełniony, wszystkie działania zostaną
. Te działania to setIcon()
i showAction()
.
Znak PageStateMatcher
pasuje do stron internetowych tylko wtedy, gdy wszystkie na liście są wymienione
kryteria. Może pasować do adresu URL strony, złożonego selektora CSS
czy stan strony dodany do zakładek. Poniższa reguła umożliwia włączenie
działanie rozszerzenia na stronach Google, gdy jest obecne pole hasła:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Aby umożliwić działanie rozszerzenia także w przypadku witryn Google z filmem, możesz dodać drugi element , bo każdy z nich jest wystarczający do wywołania wszystkich określonych działań:
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() ]
};
Zdarzenie onPageChanged
sprawdza, czy jakakolwiek reguła ma co najmniej 1 spełniony warunek
i wykonuje działania. Reguły utrzymują się przez cały czas trwania sesji przeglądania. dlatego podczas
i wydłużenie czasu instalacji. W tym celu użyj najpierw narzędzia removeRules
, aby wyczyścić
wcześniej zainstalowane reguły, a następnie użyj metody addRules
do zarejestrowania nowych.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
Z uprawnieniem activeTab rozszerzenie nie wyświetla żadnych uprawnień a gdy użytkownik kliknie działanie rozszerzenia, reklama będzie się wyświetlać tylko na odpowiednich stronach.
Dopasowywanie adresu URL strony
PageStateMatcher.pageurl
zostaje dopasowany, gdy spełnione są kryteria adresu URL.
najpopularniejsze kryteria to połączenie hosta, ścieżki lub adresu URL, po którym następuje znak „Zawiera”, „Równa się”, „Prefiks” lub
Przyrostek. Poniższa tabela zawiera kilka przykładów:
Kryteria | Odpowiada |
---|---|
{ hostSuffix: 'google.com' } |
Wszystkie adresy URL Google |
{ pathPrefix: '/docs/extensions' } |
Adresy URL dokumentów rozszerzeń |
{ urlContains: 'developer.chrome.com' } |
Wszystkie adresy URL dokumentów dla programistów Chrome |
Wielkość liter we wszystkich kryteriach ma znaczenie. Pełną listę kryteriów znajdziesz w sekcji UrlFilter.
Dopasowanie CSS
Warunki PageStateMatcher.css
muszą być selektorami złożonymi,
co oznacza, że nie można używać kombinatorów, takich jak odstępy lub „>
”. w
selektory. Dzięki temu Chrome może skuteczniej dopasowywać selektory.
Selektory złożone (OK) | Złożone selektory (niewłaściwe) |
---|---|
a |
div p |
iframe.special[src^='http'] |
p>span.highlight |
ns|* |
p + ol |
#abcd:checked |
p::first-line |
Warunki CSS pasują tylko do wyświetlanych elementów: jeśli element pasujący do selektora to
display:none
lub jeden z jego elementów nadrzędnych jest w stanie display:none
, nie powoduje, że warunek jest
dopasowania. Elementy z atrybutem visibility:hidden
, umieszczone poza ekranem lub ukryte przez inne elementy
nadal może spełnić warunek.
Dopasowanie stanu do zakładek
Warunek PageStateMatcher.isBookmarked
umożliwia dopasowanie parametru
stan bieżącego adresu URL w zakładkach w profilu użytkownika Aby użyć tego warunku,
„zakładki” musi być zadeklarowana w manifestu rozszerzenia.
Typy
ImageDataType
Więcej informacji znajdziesz na stronie https://developer.mozilla.org/en-US/docs/Web/API/ImageData.
Typ
ImageData
PageStateMatcher
Dopasowuje stan strony internetowej na podstawie różnych kryteriów.
Właściwości
-
konstruktor
nieważne
Funkcja
constructor
wygląda tak:(arg: PageStateMatcher) => {...}
-
arg
-
returns
-
-
css
string[] opcjonalnie
Pasuje, jeśli wszystkie selektory arkusza CSS w tablicy pasują do wyświetlanych elementów w ramce o tym samym pochodzeniu co główna klatka strony. Aby przyspieszyć dopasowywanie, wszystkie selektory w tej tablicy muszą być selektorami złożonymi. Uwaga: podanie setek selektorów arkusza CSS lub wyświetlanie selektorów arkusza CSS, które pasują setki razy na danej stronie, może spowolnić działanie witryny.
-
isBookmarked
Wartość logiczna opcjonalna
Chrome w wersji 45 lub nowszej .Dopasowuje, jeśli stan strony dodanej do zakładek jest równy określonej wartości. Wymaga uprawnień do tworzenia zakładek.
-
pageUrl
UrlFilter opcjonalny
Pasuje, jeśli w przypadku adresu URL najwyższego poziomu strony są spełnione warunki określone w parametrze
UrlFilter
.
RequestContentScript
Deklaracyjne działanie zdarzenia, które powoduje wstrzyknięcie skryptu treści.
OSTRZEŻENIE: to działanie jest nadal w fazie eksperymentalnej i nie jest obsługiwane w przypadku stabilnych kompilacji Chrome.
Właściwości
-
konstruktor
nieważne
Funkcja
constructor
wygląda tak:(arg: RequestContentScript) => {...}
-
returns
-
-
allFrames
Wartość logiczna opcjonalna
Określa, czy skrypt treści jest uruchamiany we wszystkich ramkach pasującej strony, czy tylko w górnej ramce. Wartość domyślna to
false
. -
css
string[] opcjonalnie
Nazwy plików CSS, które mają zostać wstawione w ramach skryptu treści.
-
JS
string[] opcjonalnie
Nazwy plików JavaScript, które mają zostać wstawione w ramach skryptu treści.
-
matchAboutBlank
Wartość logiczna opcjonalna
Określa, czy skrypt treści ma być wstawiony w elementach
about:blank
iabout:srcdoc
. Wartość domyślna tofalse
.
SetIcon
Działanie deklaracyjne, które powoduje ustawienie kwadratowej ikony n-dip dla działania strony lub działania przeglądarki rozszerzenia, gdy odpowiednie warunki są spełnione. Tego działania można użyć bez uprawnień hosta, ale rozszerzenie musi zawierać stronę lub działanie przeglądarki.
Należy podać tylko jedną z tych właściwości: imageData
lub path
. Oba są słownikami mapującymi liczbę pikseli na reprezentację obrazu. Reprezentacja obrazu w funkcji imageData
jest obiektem ImageData. na przykład w elemencie canvas
, a reprezentacja obrazu w path
to ścieżka do pliku graficznego podana w odniesieniu do pliku manifestu rozszerzenia. Jeśli piksele ekranu o rozmiarze scale
pasują do piksela niezależnego od urządzenia, używana jest ikona scale * n
. Jeśli brak tej skali, rozmiar innego obrazu zostanie zmniejszony do wymaganego rozmiaru.
Właściwości
-
konstruktor
nieważne
Funkcja
constructor
wygląda tak:(arg: SetIcon) => {...}
-
arg
-
returns
-
-
Dane_obrazów
ImageData | obiekt opcjonalny
Obiekt
ImageData
lub słownik {size -> ImageData} reprezentujące ikonę do ustawienia. Jeśli ikona jest określona jako słownik, użyty obraz jest dobierany w zależności od gęstości pikseli na ekranie. Jeśli liczba pikseli obrazu, które mieszczą się w jednej jednostce miejsca na ekranie, wynosiscale
, zostanie wybrany obraz o rozmiarzescale * n
, gdzie n to rozmiar ikony w interfejsie. Musisz określić co najmniej jeden obraz. Pamiętaj, żedetails.imageData = foo
jest odpowiednikiemdetails.imageData = {'16': foo}
.
ShowAction
Deklaratywne działanie zdarzenia, które powoduje, że działanie na pasku narzędzi rozszerzenia jest włączone, gdy są spełnione odpowiednie warunki. Tego działania można użyć bez uprawnień hosta. Jeśli rozszerzenie ma uprawnienie activeTab, kliknięcie działania na stronie zapewnia dostęp do aktywnej karty.
Na stronach, na których te warunki nie zostały spełnione, działanie rozszerzenia na pasku narzędzi będzie wykonywane w skali szarości. Jego kliknięcie powoduje otwarcie menu kontekstowego, a nie wywołanie działania.
Właściwości
-
konstruktor
nieważne
Funkcja
constructor
wygląda tak:(arg: ShowAction) => {...}
-
arg
-
returns
-
ShowPageAction
Użyj adresu declarativeContent.ShowAction
.
Akcja zdarzenia deklaratywnego, która ustawia stan działania strony rozszerzenia na włączone, gdy odpowiednie warunki są spełnione. Tego działania można użyć bez uprawnień hosta, ale rozszerzenie musi zawierać działanie na stronie. Jeśli rozszerzenie ma uprawnienie activeTab, kliknięcie działania na stronie zapewnia dostęp do aktywnej karty.
Na stronach, na których te warunki nie zostały spełnione, działanie rozszerzenia na pasku narzędzi będzie wykonywane w skali szarości. Jego kliknięcie powoduje otwarcie menu kontekstowego, a nie wywołanie działania.
Właściwości
-
konstruktor
nieważne
Funkcja
constructor
wygląda tak:(arg: ShowPageAction) => {...}
-
arg
-
returns
-
Wydarzenia
onPageChanged
Udostępnia interfejs Deklaratywny interfejs API zdarzeń, który składa się z zasad addRules
, removeRules
i getRules
.