Spec-Zone.ru › Web Extensions

content_scripts

Тип Array
Обязательно Нет
Версия манифеста 2 или выше
Пример
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

Инструктирует браузер загрузить скрипты содержимого на веб-страницы, URL которых соответствуют заданному шаблону.

Этот ключ представляет собой массив. Каждый элемент — это объект, который:

  • обязательно должен содержать ключ matches, который указывает шаблоны URL для соответствия, чтобы скрипты загружались;
  • может содержать ключи js и css, которые перечисляют скрипты и/или стили, которые будут загружаться на соответствующие страницы; и
  • может содержать ряд других свойств, которые контролируют более тонкие аспекты загрузки и работы скриптов содержимого.

Подробное описание всех ключей, которые можно включить, приведено в таблице ниже.

Имя Тип Описание
all_frames Boolean
true

Вставить скрипты, указанные в js и css, во все фреймы, соответствующие заданным требованиям URL, даже если фрейм не является верхним фреймом в вкладке. Это не вставляет в дочерние фреймы, где только их родитель соответствует требованиям URL, а дочерний фрейм не соответствует требованиям URL. Требования URL проверяются для каждого фрейма независимо.

Примечание: Это также относится к любому трекеру или объявлению, использующему iframes, что означает, что включение этого может заставить ваш скрипт содержимого вызываться десятки раз на некоторых страницах.

false
Вставить только в фреймы, соответствующие требованиям URL, которые являются верхним фреймом в вкладке.

По умолчанию false.

css Array

Массив путей, относящихся к manifest.json, ссылок на файлы CSS, которые будут вставлены на соответствующие страницы.

Файлы вставляются в указанном порядке и в момент, указанный в run_at.

Примечание: Firefox разрешает URL в вставленных CSS-файлах относительно самого CSS-файла, а не страницы, в которую он вставлен.

exclude_globs Array Массив строк, содержащих шаблоны. Смотрите Шаблоны URL ниже.
exclude_matches Array Массив шаблонов соответствия. Смотрите Шаблоны URL ниже.
include_globs Array Массив строк, содержащих шаблоны. Смотрите Шаблоны URL ниже.
js Array

Массив путей, относящихся к manifest.json, ссылок на файлы JavaScript, которые будут вставлены на соответствующие страницы.

Файлы вставляются в указанном порядке. Это означает, что, например, если вы включаете jQuery здесь, а затем другой скрипт содержимого, как это:

"js": ["jquery.js", "my-content-script.js"]

Тогда "my-content-script.js" может использовать jQuery.

Файлы вставляются после любых файлов в css, и в момент, указанный run_at.

match_about_blank Boolean

Вставить скрипты содержимого на страницы, URL которых "about:blank" или "about:srcdoc", если URL страницы, которая открыла или создала эту страницу, соответствует шаблонам, указанным в остальной части ключа content_scripts.

Это особенно полезно для запуска скриптов в пустых iframes, чей URL "about:blank". Для этого также следует установить ключ all_frames.

Например, предположим, что у вас есть ключ content_scripts такого вида:

  "content_scripts": [
    {
      "js": ["my-script.js"],
      "matches": ["https://example.org/"],
      "match_about_blank": true,
      "all_frames": true
    }
  ]

Если пользователь загружает https://example.org/, и эта страница встраивает пустой iframe, то "my-script.js" будет загружен в iframe.

Примечание: match_about_blank поддерживается в Firefox с версии 52.

Обратите внимание, что в Firefox скрипты содержимого не будут вставлены в пустые iframes по адресу "document_start", даже если вы укажете это значение в run_at.

matches Array

Массив шаблонов соответствия. Смотрите Шаблоны URL ниже.

Это единственный обязательный ключ.

run_at String

Этот параметр определяет, когда файлы, указанные в css и js вставляются. Вы можете указать одну из трех строк, каждая из которых идентифицирует состояние в процессе загрузки документа. Состояния напрямую соответствуют Document.readyState:

"document_start"
Соответствует loading . DOM все еще загружается.
"document_end"
Соответствует interactive . DOM завершил загрузку, но ресурсы, такие как скрипты и изображения, могут еще загружаться.
"document_idle"
Соответствует complete . Документ и все его ресурсы завершили загрузку.

Значение по умолчанию "document_idle".

Во всех случаях файлы в js вставляются после файлов в css.

Шаблоны 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 , если оно присутствует

Шаблоны

Шаблон — это просто строка, которая может содержать подстановочные знаки.

Существует два типа подстановочных знаков, и вы можете комбинировать их в одном шаблоне:

  1. * соответствует нулю или более символам
  2. ? соответствует ровно одному символу.

Например: "*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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API