chrome.declarativeContent

дата обновления: 2026-09-25 robots: noindex

Описание

Используйте API chrome.declarativeContent для выполнения действий в зависимости от содержимого страницы, не требуя разрешения на чтение содержимого страницы.

Разрешения

declarativeContent

Использование

Декларативный API контента позволяет включать действие вашего расширения в зависимости от URL-адреса веб-страницы или от того, соответствует ли CSS-селектор элементу на странице, без необходимости добавления разрешений хоста или внедрения скрипта контента .

Используйте разрешение activeTab для взаимодействия со страницей после того, как пользователь нажмет на действие расширения.

Правила

Правила состоят из условий и действий. Если выполняется хотя бы одно из условий, выполняются все действия. Действиями являются setIcon и showAction .

PageStateMatcher соответствует веб-страницам только в том случае, если выполняются все перечисленные критерии. Он может соответствовать URL-адресу страницы , составному CSS-селектору или состоянию закладки страницы. Следующее правило включает действие расширения на страницах Google, если присутствует поле для ввода пароля:

let rule1 = {
  conditions: [
    new chrome.declarativeContent.PageStateMatcher({
      pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
      css: ["input[type='password']"]
    })
  ],
  actions: [ new chrome.declarativeContent.ShowAction() ]
};

Чтобы также включить действие расширения для сайтов Google с видео, можно добавить второе условие, поскольку каждого условия достаточно для запуска всех указанных действий:

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() ]
};

Событие onPageChanged проверяет, выполняется ли хотя бы одно условие для какого-либо правила, и выполняет соответствующие действия. Правила сохраняются между сеансами просмотра; поэтому во время установки расширения сначала следует использовать removeRules для удаления ранее установленных правил, а затем addRules для регистрации новых.

chrome.runtime.onInstalled.addListener(function(details) {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([rule2]);
  });
});

При наличии разрешения activeTab ваше расширение не будет отображать никаких предупреждений о разрешениях, и когда пользователь нажимает на действие расширения, оно будет запускаться только на соответствующих страницах.

Сопоставление URL-адресов страниц

Объект PageStateMatcher.pageurl срабатывает, когда выполняются критерии URL. Наиболее распространенные критерии — это конкатенация хоста, пути или URL, за которой следуют Contains, Equals, Prefix или Suffix. В следующей таблице приведены несколько примеров:

Критерии Матчи
{ hostSuffix: 'google.com' } Все URL-адреса Google
{ pathPrefix: '/docs/extensions' } URL-адреса документации расширений
{ urlContains: 'developer.chrome.com' } Все URL-адреса документации для разработчиков Chrome

Все критерии чувствительны к регистру. Полный список критериев см. в разделе UrlFilter .

Сопоставление CSS

Условия в PageStateMatcher.css должны быть составными селекторами , то есть вы не можете включать в селекторы такие комбинаторы, как пробелы или " > ". Это помогает Chrome более эффективно сопоставлять селекторы.

Составные селекторы (ОК) Сложные селекторы (недопустимо)
a div p
iframe.special[src^='http'] p>span.highlight
ns|* p + ol
#abcd:checked p::first-line

Условия CSS применяются только к отображаемым элементам: если элемент, соответствующий вашему селектору, имеет display:none или один из его родительских элементов имеет display:none , это не приведет к выполнению условия. Элементы, стилизованные с помощью visibility:hidden , расположенные за пределами экрана или скрытые другими элементами, все еще могут привести к выполнению условия.

Сопоставление штатов с закладками

Условие PageStateMatcher.isBookmarked позволяет сопоставлять состояние закладок текущего URL-адреса в профиле пользователя. Для использования этого условия необходимо указать разрешение "закладки" в манифесте расширения.

Типы

Тип

ImageData

PageStateMatcher

Сопоставляет состояние веб-страницы на основе различных критериев.

Характеристики

  • конструктор

    пустота

    Функция- constructor выглядит следующим образом:

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

  • css

    строка[] необязательный

    Соответствует, если все селекторы CSS в массиве соответствуют отображаемым элементам во фрейме с тем же центром, что и основной фрейм страницы. Для ускорения сопоставления все селекторы в этом массиве должны быть составными . Примечание: перечисление сотен селекторов CSS или селекторов CSS, которые соответствуют сотни раз на странице, может замедлить работу веб-сайтов.

  • isBookmarked

    логический необязательный

    Chrome 45+

    Соответствует указанному значению, если состояние закладки страницы равно заданному значению. Требует разрешения на использование закладок .

  • pageUrl

    UrlFilter ( необязательно)

    Соответствует условиям UrlFilter , если они выполняются для URL-адреса верхнего уровня страницы.

RequestContentScript

Декларативное событие, внедряющее скрипт содержимого.

ВНИМАНИЕ: Эта функция пока экспериментальная и не поддерживается в стабильных сборках Chrome.

Характеристики

  • конструктор

    пустота

    Функция- constructor выглядит следующим образом:

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

  • все кадры

    логический необязательный

    Определяет, выполняется ли скрипт содержимого во всех фреймах соответствующей страницы или только в верхнем фрейме. По умолчанию — false .

  • css

    строка[] необязательный

    Названия CSS-файлов, которые будут внедрены в состав скрипта содержимого.

  • js

    строка[] необязательный

    Названия JavaScript-файлов, которые будут внедрены в состав скрипта содержимого.

  • matchAboutBlank

    логический необязательный

    Следует ли вставлять скрипт содержимого в поля about:blank и about:srcdoc . По умолчанию — false .

SetIcon

Декларативное событие, устанавливающее значок n-dip square для действия страницы или действия браузера расширения при выполнении соответствующих условий. Это действие можно использовать без разрешений хоста , но расширение должно иметь действие страницы или действия браузера.

Необходимо указать ровно один из параметров: imageData или path . Оба являются словарями, сопоставляющими количество пикселей с представлением изображения. Представление изображения в imageData — это объект ImageData ; например, из элемента canvas , а представление изображения в path — это путь к файлу изображения относительно манифеста расширения. Если scale пикселей экрана помещается в независимый от устройства пиксель, используется значок scale * n . Если этот масштаб отсутствует, другое изображение изменяется до требуемого размера.

Характеристики

  • конструктор

    пустота

    Функция- constructor выглядит следующим образом:

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

  • данные изображения

    ImageData | объект необязателен

    Либо объект ImageData , либо словарь {size -> ImageData}, представляющий иконку, которую необходимо установить. Если иконка указана в виде словаря, используемое изображение выбирается в зависимости от плотности пикселей экрана. Если количество пикселей изображения, помещающихся в одну единицу экранного пространства, равно scale , то выбирается изображение размером scale * n , где n — размер иконки в пользовательском интерфейсе. Необходимо указать как минимум одно изображение. Обратите внимание, что details.imageData = foo эквивалентно details.imageData = {'16': foo} .

ShowAction

Chrome 97+

Декларативное событие, которое устанавливает действие панели инструментов расширения в активное состояние при выполнении соответствующих условий. Это действие можно использовать без разрешений хоста . Если у расширения есть разрешение activeTab , щелчок по действию страницы предоставляет доступ к активной вкладке.

На страницах, где условия не соблюдены, панель инструментов расширения будет отображаться в оттенках серого, и щелчок по ней откроет контекстное меню вместо запуска действия.

Характеристики

  • конструктор

    пустота

    Функция- constructor выглядит следующим образом:

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

ShowPageAction

Устарело с версии Chrome 97.

Пожалуйста, используйте declarativeContent.ShowAction .

Декларативное событие, которое устанавливает действие страницы расширения в состояние "включено" при выполнении соответствующих условий. Это действие можно использовать без разрешений хоста , но расширение должно иметь действие страницы. Если расширение имеет разрешение activeTab , щелчок по действию страницы предоставляет доступ к активной вкладке.

На страницах, где условия не соблюдены, панель инструментов расширения будет отображаться в оттенках серого, и щелчок по ней откроет контекстное меню вместо запуска действия.

Характеристики

События

onPageChanged

Предоставляет декларативный API событий, включающий функции addRules , removeRules и getRules .

Условия