Ключ "content_scripts"
указывает статически загружаемый файл JavaScript или CSS, который будет использоваться каждый раз при открытии страницы, соответствующей определенному шаблону URL-адреса . Расширения также могут программно вставлять сценарии содержимого. Подробности см. в разделе «Внедрение сценариев» .
Манифест
Это поддерживаемые ключи для "content_scripts"
. Требуется только ключ "matches"
и "js"
или "css"
.
манифест.json
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"css": ["my-styles.css"],
"js": ["content-script.js"],
"exclude_matches": ["*://*/*foo*"],
"include_globs": ["*example.com/???s/*"],
"exclude_globs": ["*bar*"],
"all_frames": false,
"match_origin_as_fallback": false,
"match_about_blank": false,
"run_at": "document_idle",
"world": "ISOLATED",
}
],
...
}
Файлы
Каждый файл должен содержать относительный путь к ресурсу в корневом каталоге расширения. Ведущие косые черты ( /
) автоматически обрезаются. Ключ "run_at"
указывает, когда будет внедрен каждый файл.
-
"css"
— Массив - Необязательный . Массив путей к файлам CSS, внедряемых в порядке этого массива и до того, как произойдет какое-либо построение DOM или рендеринг страницы.
-
"js"
— Массив, - Необязательный . Массив путей к файлам JavaScript, внедренных в том порядке, в котором они появляются в этом массиве, после внедрения файлов CSS. Каждая строка в массиве должна представлять собой относительный путь к ресурсу в корневом каталоге расширения. Ведущие косые черты ('/') автоматически обрезаются.
Сопоставить URL-адреса
Требуется только свойство "matches"
. Затем вы можете использовать "exclude_matches"
, "include_globs"
и "exclude_globs"
чтобы указать, в какие URL-адреса следует вставлять код. Клавиша "matches"
вызовет предупреждение .
-
"matches"
— Массив - Необходимый . Указывает, в какие шаблоны URL-адресов следует вставлять сценарии содержимого. Синтаксис см. в разделе «Шаблоны сопоставления» .
-
"exclude_matches"
— Массив - Необязательный . Исключает шаблоны URL-адресов для внедрения сценариев содержимого. Синтаксис см. в разделе «Шаблоны сопоставления» .
-
"include_globs"
— Массив - Необязательный . Применяется после совпадений, чтобы включать только те URL-адреса, которые также соответствуют этому шаблону. Предназначен для эмуляции ключевого слова @include Greasemonkey.
-
"exclude_globs"
— Массив - Необязательный . Применяется после совпадений, чтобы исключить URL-адреса, соответствующие этому шаблону. Предназначен для эмуляции ключевого слова @exclude Greasemonkey.
Глобальные URL-адреса — это URL-адреса, которые содержат «подстановочные знаки» * и вопросительные знаки. Подстановочный знак * соответствует любой строке любой длины, включая пустую строку, а вопросительный знак ? соответствует любому отдельному символу.
Сценарий содержимого внедряется на страницу, если:
- Его URL-адрес соответствует любым шаблонам
"matches"
и"include_globs"
. - И URL-адрес не соответствует шаблонам
"exclude_matches"
или"exclude_globs"
.
Примеры сопоставления глобусов и URL-адресов
"include_globs"
манифест.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"include_globs": ["https://???.example.com/foo/*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/foo/bar https://the.example.com/foo/
https://my.example.com/foo/bar https://example.com/foo/* https://www.example.com/foo
манифест.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"include_globs": ["*example.com/???s/*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/arts/index.html https://www.example.com/jobs/index.html
https://www.example.com/sports/index.html https://www.example.com/music/index.html
"exclude_globs"
манифест.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"exclude_globs": ["*science*"],
"js": ["content-script.js"]
}
],
...
}
https://history.example.com https://.example.com/music
https://science.example.com https://www.example.com/science
Пример расширенной настройки
манифест.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"exclude_matches": ["*://*/*business*"],
"include_globs": ["*example.com/???s/*"],
"exclude_globs": ["*science*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/arts/index.html https://.example.com/jobs/index.html
https://science.example.com https://www.example.com/jobs/business https://www.example.com/science
Рамки
Ключ "all_frames"
указывает, следует ли вставлять сценарий содержимого во все кадры, соответствующие указанным требованиям URL-адреса. Если установлено значение false
он будет вставляться только в самый верхний кадр. Его можно использовать вместе с "match_about_blank"
для внедрения в кадр about:blank
.
Чтобы внедрить данные в другие фреймы, такие как data:
, blob:
и filesystem:
, установите для параметра "match_origin_as_fallback"
значение true
. Подробности см. в разделе «Вставка в связанные кадры».
-
"all_frames"
логическое значение - Необязательный . По умолчанию установлено значение
false
, что означает, что сопоставляется только верхний кадр. Если установлено значение true, он будет вставляться во все кадры, даже если этот кадр не является самым верхним кадром на вкладке. Каждый кадр проверяется независимо на соответствие требованиям URL-адреса. Он не будет внедряться в дочерние кадры, если требования URL-адреса не выполняются. -
"match_about_blank"
— логическое значение - Необязательный . По умолчанию установлено значение
false
. Должен ли сценарий вставляться в кадрabout:blank
, где родительский URL-адрес соответствует одному из шаблонов, объявленных в"matches"
. -
"match_origin_as_fallback"
— логическое значение - Необязательный . По умолчанию установлено значение
false
. Должен ли сценарий внедрить кадры, созданные соответствующим источником, но URL-адрес или источник которых могут не соответствовать шаблону напрямую. К ним относятся кадры с различными схемами, напримерabout:
,data:
,blob:
иfilesystem:
.
Время выполнения и среда выполнения
По умолчанию сценарии содержимого внедряются после завершения загрузки документа и всех ресурсов и находятся в частной изолированной среде выполнения, недоступной для страницы или других расширений. Вы можете изменить эти значения по умолчанию с помощью следующих клавиш:
-
"run_at"
-document_start
|document_end
|document_idle
- Необязательный . Указывает, когда сценарий следует внедрить на страницу. Это соответствует состояниям загрузки Document.readyState :
-
"document_start"
: DOM все еще загружается. -
"document_end"
: ресурсы страницы все еще загружаются. -
"document_idle"
: загрузка DOM и ресурсов завершена. Это значение по умолчанию.
-
-
"world"
-ISOLATED
|MAIN
- Необязательный . Мир JavaScript, в котором выполняется скрипт. По умолчанию установлено значение
"ISOLATED"
, которое является средой выполнения, уникальной для сценария содержимого. Выбор мира"MAIN"
означает, что сценарий будет использовать среду выполнения совместно с JavaScript главной страницы. Дополнительную информацию см. в разделе «Работа в изолированных мирах» .
Пример
См. руководство «Запуск на каждой странице» , чтобы создать расширение, которое вставляет сценарий содержимого в манифест.