chrome.declarativeContent

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

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) => {...}

  • 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 nowsze

    Dopasowanie 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) => {...}

  • 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:blankabout:srcdoc. Wartość domyślna to false.

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) => {...}

  • 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, wynosi scale, wybierany jest obraz o rozmiarze scale * n, gdzie n to rozmiar ikony w interfejsie. Musisz podać co najmniej 1 obraz. Pamiętaj, że details.imageData = foo jest równoznaczne z details.imageData = {'16': foo}.

ShowAction

Chrome 97 lub nowszy

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

ShowPageAction

Wycofane w wersji Chrome 97

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

Wydarzenia

onPageChanged

Udostępnia deklaratywny interfejs API zdarzeń, który składa się z interfejsów addRules, removeRulesgetRules.