content_scripts
| Тип | Array |
|---|---|
| Обязательно | Нет |
| Версия манифеста | 2 или выше |
| Пример | "content_scripts": [ { "matches": ["*://*.mozilla.org/*"], "js": ["borderify.js"] } ] |
Инструктирует браузер загрузить скрипты содержимого на веб-страницы, URL которых соответствуют заданному шаблону.
Этот ключ представляет собой массив. Каждый элемент — это объект, который:
-
обязательно должен содержать ключ
matches, который указывает шаблоны URL для соответствия, чтобы скрипты загружались; -
может содержать ключи
jsиcss, которые перечисляют скрипты и/или стили, которые будут загружаться на соответствующие страницы; и - может содержать ряд других свойств, которые контролируют более тонкие аспекты загрузки и работы скриптов содержимого.
Подробное описание всех ключей, которые можно включить, приведено в таблице ниже.
| Имя | Тип | Описание |
|---|---|---|
all_frames | Boolean |
По умолчанию |
css | Array | Массив путей, относящихся к Файлы вставляются в указанном порядке и в момент, указанный в Примечание: Firefox разрешает URL в вставленных CSS-файлах относительно самого CSS-файла, а не страницы, в которую он вставлен. |
exclude_globs | Array | Массив строк, содержащих шаблоны. Смотрите Шаблоны URL ниже. |
exclude_matches | Array | Массив шаблонов соответствия. Смотрите Шаблоны URL ниже. |
include_globs | Array | Массив строк, содержащих шаблоны. Смотрите Шаблоны URL ниже. |
js | Array | Массив путей, относящихся к Файлы вставляются в указанном порядке. Это означает, что, например, если вы включаете jQuery здесь, а затем другой скрипт содержимого, как это: "js": ["jquery.js", "my-content-script.js"] Тогда Файлы вставляются после любых файлов в |
match_about_blank | Boolean | Вставить скрипты содержимого на страницы, URL которых Это особенно полезно для запуска скриптов в пустых iframes, чей URL Например, предположим, что у вас есть ключ "content_scripts": [ { "js": ["my-script.js"], "matches": ["https://example.org/"], "match_about_blank": true, "all_frames": true } ] Если пользователь загружает Примечание: Обратите внимание, что в Firefox скрипты содержимого не будут вставлены в пустые iframes по адресу |
matches | Array | Массив шаблонов соответствия. Смотрите Шаблоны URL ниже. Это единственный обязательный ключ. |
run_at | String | Этот параметр определяет, когда файлы, указанные в
Значение по умолчанию |
Шаблоны URL
Ключ "content_scripts" прикрепляет скрипты содержимого к документам на основе соответствия URL: если URL документа соответствует спецификации в ключе, то скрипт будет прикреплен. Внутри "content_scripts" есть четыре свойства, которые вы можете использовать для этой спецификации:
matches-
массив шаблонов соответствия
exclude_matches-
массив шаблонов соответствия
include_globs-
массив шаблонов
exclude_globs-
массив шаблонов
Чтобы соответствовать одному из этих свойств, URL должен соответствовать по крайней мере одному из элементов в его массиве. Например, учитывая свойство, подобное:
"matches": ["*://*.example.org/*", "*://*.example.com/*"]
И http://example.org/ и http://example.com/ будут соответствовать.
Поскольку matches — единственный обязательный ключ, другие три ключа используются для дальнейшего ограничения URL, которые соответствуют. Для соответствия ключу в целом URL должен:
- соответствовать свойству
matches - И соответствовать свойству
include_globs, если оно присутствует - И не соответствовать свойству
exclude_matches, если оно присутствует - И не соответствовать свойству
exclude_globs, если оно присутствует
Шаблоны
Шаблон — это просто строка, которая может содержать подстановочные знаки.
Существует два типа подстановочных знаков, и вы можете комбинировать их в одном шаблоне:
-
*соответствует нулю или более символам -
?соответствует ровно одному символу.
Например: "*na?i" будет соответствовать "illuminati" и "annunaki", но не "sagnarelli".
Пример
"content_scripts": [ { "matches": ["*://*.mozilla.org/*"], "js": ["borderify.js"] } ]
Это вставляет один скрипт содержимого borderify.js на все страницы под mozilla.org или любыми его доменными именами, независимо от того, обслуживаются ли они по протоколу HTTP или HTTPS.
"content_scripts": [ { "exclude_matches": ["*://developer.mozilla.org/*"], "matches": ["*://*.mozilla.org/*"], "js": ["jquery.js", "borderify.js"] } ]
Это вставляет два скрипта содержимого на все страницы под mozilla.org или любыми его доменными именами, за исключением developer.mozilla.org, независимо от того, обслуживаются ли они по протоколу HTTP или HTTPS.
Скрипты содержимого видят одинаковую область DOM и вставляются в том порядке, в котором они появляются в массиве, поэтому borderify.js может видеть глобальные переменные, добавленные jquery.js.
Совместимость с браузером
| Рабочий стол | Мобильный | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | |
content_scripts |
ДаСкрипты контента не применяются к вкладкам, уже открытым при загрузке расширения. |
14 | 48 | ? | ДаСкрипты контента не применяются к вкладкам, пока пользователь не предоставит разрешение через всплывающее окно доступа расширения в панели инструментов. |
14Скрипты контента не применяются к вкладкам, пока пользователь не предоставит разрешение через всплывающее уведомление доступа расширения. |
? | ? | 48 | ? | 15Скрипты контента не применяются к вкладкам, пока пользователь не предоставит разрешение через всплывающее уведомление доступа расширения. |
? |
all_frames |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
css |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
exclude_globs |
Да | 14 | 48 | ? | Да | Нет | ? | ? | 48 | ? | Нет | ? |
exclude_matches |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
include_globs |
Да | 14 | 48 | ? | Да | Нет | ? | ? | 48 | ? | Нет | ? |
js |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
match_about_blank |
Да | 14 | 52Скрипты контента не будут инжектированы в пустые iframe в 'document_start', даже если вы указали это значение в 'run_at'. |
? | Да | Нет | ? | ? | 52Скрипты контента не будут инжектированы в пустые iframe в 'document_start', даже если вы указали это значение в 'run_at'. |
? | Нет | ? |
matches |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
run_at |
Да | 14 | 48 | ? | Да | 14Скрипты контента не применяются к вкладкам, пока пользователь не предоставит разрешение через всплывающее окно доступа расширения в панели инструментов. Дополнительные загрузки после предоставления разрешения будут учитыватьrun_at. |
? | ? | 48 | ? | 15Скрипты контента не применяются к вкладкам, пока пользователь не предоставит разрешение через всплывающее уведомление доступа расширения. Дополнительные загрузки после предоставления разрешения будут учитыватьrun_at. |
? |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts