Opis
Korzystaj z interfejsu API chrome.declarativeContent
, aby podejmować działania zależne od treści strony, bez konieczności uzyskiwania uprawnień do odczytu tej treści.
Uprawnienia
declarativeContent
Pojęcia i zastosowanie
Interfejs Declarative Content API umożliwia włączenie działania rozszerzenia w zależności od adresu URL strony internetowej lub gdy selektor CSS pasuje do elementu na stronie, bez konieczności dodawania uprawnień hosta ani wstrzykiwania skryptu treści.
Użyj uprawnienia activeTab, aby wchodzić w interakcję ze stroną po kliknięciu przez użytkownika działania rozszerzenia.
Reguły
Reguły składają się z warunków i działań. Jeśli którykolwiek z warunków zostanie spełniony, wszystkie działania zostaną wykonane. Działania to setIcon()
i showAction()
.
PageStateMatcher
pasuje do stron internetowych tylko wtedy, gdy są spełnione wszystkie wymienione kryteria. Może ona pasować do adresu URL strony, elementu złożonego CSS lub stanu strony z zakładką. Poniższa reguła umożliwia 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 w przypadku witryn Google z filmem, możesz dodać drugi warunek, ponieważ każdy warunek wystarczy 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 którakolwiek reguła ma co najmniej 1 spełniony warunek, i wykonuje działania. Reguły są zachowywane w trakcie sesji przeglądania, dlatego podczas instalacji rozszerzenia najpierw użyj removeRules
, aby wyczyścić wcześniej zainstalowane reguły, a potem użyj addRules
, aby zarejestrować nowe.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
Dzięki uprawnieniu activeTab rozszerzenie nie będzie wyświetlać żadnych ostrzeżeń dotyczących uprawnień, a gdy użytkownik kliknie działanie rozszerzenia, będzie ono działać tylko na odpowiednich stronach.
Dopasowywanie adresów URL stron
PageStateMatcher.pageurl
pasuje, gdy są spełnione kryteria adresu URL. Najczęstsze kryteria to konkatenacja hosta, ścieżki lub adresu URL, po której następuje zawiera, równa się, prefiks lub sufiks. W tabeli poniżej znajdziesz kilka przykładów:
Kryteria | Dopasowania |
---|---|
{ 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 deweloperów Chrome |
W przypadku wszystkich kryteriów wielkość liter ma znaczenie. Pełną listę wymagań znajdziesz w sekcji UrlFilter.
Dopasowywanie w usłudze porównywania cen
Warunki PageStateMatcher.css
muszą być elementami złożonymi, co oznacza, że w elementach selektora nie można uwzględniać elementów łączących, takich jak odstępy czy „>
”. Pomaga to Chrome w skuteczniejszym dopasowywaniu selektorów.
Selektory złożone (OK) | Selektory złożone (nieprawidłowe) |
---|---|
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 Twojego selektora ma wartość display:none
lub jeden z jego elementów nadrzędnych ma wartość display:none
, warunek nie będzie pasować. Elementy stylizowane za pomocą visibility:hidden
, umieszczone poza ekranem lub ukryte przez inne elementy mogą nadal pasować do warunku.
Dopasowywanie stanu dodanego do zakładek
Warunek PageStateMatcher.isBookmarked
umożliwia dopasowanie stanu bieżącego adresu URL w profilu użytkownika do stanu zakładki. Aby można było korzystać z tego warunku, w manifest rozszerzenia musi być zadeklarowane uprawnienie „zakładki”.
Typy
ImageDataType
Zobacz 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
-
constructor
nieważne
Funkcja
constructor
ma postać:(arg: PageStateMatcher) => {...}
-
arg
-
returns
-
-
css
string[] opcjonalnie
Pasuje, jeśli wszystkie selektory CSS w tablicy pasują do elementów wyświetlanych w ramce o tym samym pochodzeniu co główna rama strony. Aby przyspieszyć dopasowywanie, wszystkie selektory w tym tablicy muszą być selektorami złożonymi. Uwaga: dodanie setek selektorów arkusza CSS lub selektorów, które pasują setki razy na stronie, może spowolnić działanie witryn.
-
isBookmarked
logiczna opcjonalna
Chrome 45 i nowszeDopasowanie występuje, jeśli strona z zakładką ma stan równy określonej wartości. Wymaga uprawnienia do obsługi zakładek.
-
pageUrl
UrlFilter opcjonalny
Dopasowuje się, jeśli warunki wyrażenia
UrlFilter
są spełnione w przypadku adresu URL najwyższego poziomu strony.
RequestContentScript
Deklaratywna czynność zdarzenia, która wstrzykuje skrypt treści.
OSTRZEŻENIE: ta funkcja jest nadal eksperymentalna i nie jest obsługiwana w stabilnych wersjach Chrome.
Właściwości
-
constructor
nieważne
Funkcja
constructor
ma postać:(arg: RequestContentScript) => {...}
-
returns
-
-
allFrames
logiczna opcjonalna
Określa, czy skrypt treści ma działać we wszystkich ramkach pasującej strony, czy tylko w ramce górnej. Wartość domyślna to
false
. -
css
string[] opcjonalnie
Nazwy plików CSS, które mają zostać wstrzyknięte w ramach skryptu dotyczącego treści.
-
js
string[] opcjonalnie
Nazwy plików JavaScript, które mają zostać wstrzyknięte jako część skryptu treści.
-
matchAboutBlank
logiczna opcjonalna
Określa, czy skrypt dotyczący zawartości ma być wstawiany w miejscach
about:blank
iabout:srcdoc
. Wartość domyślna tofalse
.
SetIcon
Deklaratywna akcja zdarzenia, która ustawia kwadratową ikonę o wymiarach n pikseli na potrzeby działania na stronie lub działania w przeglądarce rozszerzenia, gdy są spełnione odpowiednie warunki. Tego działania można używać bez uprawnień hosta, ale rozszerzenie musi mieć działanie dotyczące strony lub przeglądarki.
Musisz podać dokładnie jedną z tych właściwości: imageData
lub path
. Oba są słownikami, które mapują liczbę pikseli na reprezentację obrazu. Reprezentacja obrazu w imageData
to obiekt ImageData, np. z elementu canvas
, natomiast reprezentacja obrazu w path
to ścieżka do pliku obrazu względem pliku manifestu rozszerzenia. Jeśli piksele ekranu scale
mieszczą się w pikselu niezależnym od urządzenia, używana jest ikona scale * n
. Jeśli brakuje tej skali, rozmiar innego obrazu zostanie dostosowany do wymaganego rozmiaru.
Właściwości
-
constructor
nieważne
Funkcja
constructor
ma postać:(arg: SetIcon) => {...}
-
arg
-
returns
-
-
imageData
ImageData | object optional
Obiekt
ImageData
lub słownik {size -> ImageData} reprezentujący ikonę do ustawienia. Jeśli ikona jest określona jako słownik, obraz jest wybierany w zależności od gęstości pikseli ekranu. Jeśli liczba pikseli obrazu, która mieści się w jednej jednostce przestrzeni ekranu, wynosiscale
, wybierany jest obraz o rozmiarzescale * n
, gdzie n to rozmiar ikony w interfejsie. Musisz podać co najmniej 1 obraz. Pamiętaj, żedetails.imageData = foo
jest równoznaczne zdetails.imageData = {'16': foo}
.
ShowAction
Deklaratywna akcja zdarzenia, która ustawia działanie paska narzędzi rozszerzenia w stanie włączonym, gdy są spełnione odpowiednie warunki. Tego działania można używać bez uprawnień hosta. Jeśli rozszerzenie ma uprawnienia activeTab, kliknięcie działania na stronie spowoduje przyznanie dostępu do aktywnej karty.
Na stronach, na których warunki nie są spełnione, działanie na pasku narzędzi rozszerzenia będzie wyświetlane w szarościach. Kliknięcie go spowoduje otwarcie menu kontekstowego, a nie wywołanie działania.
Właściwości
-
constructor
nieważne
Funkcja
constructor
ma postać:(arg: ShowAction) => {...}
-
arg
-
returns
-
ShowPageAction
Użyj wartości declarativeContent.ShowAction
.
Deklaratywna czynność zdarzenia, która powoduje, że działanie na stronie rozszerzenia jest włączone, gdy są spełnione odpowiednie warunki. Z tego działania można korzystać bez uprawnień hosta, ale rozszerzenie musi mieć działanie na stronie. Jeśli rozszerzenie ma uprawnienia activeTab, kliknięcie działania na stronie spowoduje przyznanie dostępu do aktywnej karty.
Na stronach, na których warunki nie są spełnione, działanie na pasku narzędzi rozszerzenia będzie wyświetlane w szarościach. Kliknięcie go spowoduje otwarcie menu kontekstowego, a nie wywoła działania.
Właściwości
-
constructor
nieważne
Funkcja
constructor
ma postać:(arg: ShowPageAction) => {...}
-
arg
-
returns
-
Wydarzenia
onPageChanged
Udostępnia deklaratywny interfejs API zdarzeń, który składa się z interfejsów addRules
, removeRules
i getRules
.