Архитектура расширения
Расширение состоит из набора файлов, упакованных для распространения и установки. В этой статье мы кратко рассмотрим файлы, которые могут присутствовать в расширении.
manifest.json
Это единственный файл, который обязательно должен присутствовать в каждом расширении. Он содержит основную метаданные, такие как название, версия и необходимые разрешения. Он также предоставляет указатели на другие файлы в расширении.
Файл манифеста также может содержать указатели на несколько других типов файлов:
- Фоновые скрипты
-
Скрипты, которые реагируют на события браузера.
- Иконки
-
Для расширения и любых кнопок, которые оно может определять.
-
HTML-документы, которые предоставляют контент для различных компонентов пользовательского интерфейса.
- Скрипты контента
-
JavaScript, включённый в расширение, который вы вставите в веб-страницы.
- Ресурсы, доступные в веб-среде
-
Обеспечивают доступ к упакованному контенту для веб-страниц и скриптов контента.
См. страницу справки manifest.json для получения всех подробностей.
Помимо перечисленных в манифесте, расширение может также содержать дополнительные страницы расширения и вспомогательные файлы.
Фоновые скрипты
Расширениям часто необходимо реагировать на события, происходящие в браузере независимо от срока службы конкретной веб-страницы или окна браузера. Для этого предназначены фоновые скрипты.
Фоновые скрипты могут быть постоянными или временными. Постоянные фоновые скрипты загружаются как только загружается расширение и остаются загруженными до тех пор, пока расширение не будет отключено или удалено. Это поведение фонового скрипта доступно только в манифесте версии 2. Временные фоновые скрипты загружаются при необходимости для реагирования на событие и выгружаются, когда они становятся бездействующими. Это поведение фонового скрипта является опцией в манифесте версии 2 и единственным доступным в манифесте версии 3.
В скрипте можно использовать любые из API WebExtension, если вы запросили необходимые разрешения.
См. статью фоновые скрипты, чтобы узнать больше.
Боковые панели, всплывающие окна и страницы настроек
Ваше расширение может включать различные компоненты пользовательского интерфейса, контент которых определён с помощью HTML-документа:
-
Панель, которая отображается в левой части окна браузера рядом с веб-страницей.
- Всплывающее окно
-
Диалоговое окно, которое можно отобразить, когда пользователь нажимает на кнопку на панели инструментов или кнопку в адресной строке.
- Настройки
-
Страница, которая отображается, когда пользователь обращается к настройкам вашего дополнения в менеджере дополнений браузера.
Для каждого из этих компонентов вы создаёте HTML-файл и указываете на него с помощью определённого свойства в manifest.json. HTML-файл может содержать CSS- и JavaScript-файлы, как и обычная веб-страница.
Все эти элементы относятся к типу страниц расширения. В отличие от обычной веб-страницы, ваш JavaScript может использовать те же привилегированные API WebExtension, что и ваш фоновый скрипт.
Страницы расширения
Вы также можете включить HTML-документы в своё расширение, которые не привязаны к определённому компоненту пользовательского интерфейса. В отличие от документов, которые вы предоставляете для боковых панелей, всплывающих окон или страниц настроек, у них нет записи в manifest.json. Однако они также получают доступ ко всем тем же привилегированным API WebExtension, что и ваш фоновый скрипт.
Обычно такую страницу загружают с помощью windows.create() или tabs.create().
См. страницы расширений для получения дополнительной информации.
Скрипты контента
Используйте скрипты контента для доступа к веб-страницам и управления ими. Скрипты контента загружаются в веб-страницы и выполняются в контексте этой конкретной страницы.
Скрипты контента — это скрипты, предоставляемые расширением, которые выполняются в контексте веб-страницы; это отличается от скриптов, которые загружаются самой страницей, включая те, что предоставляются в <script> элементах внутри страницы.
Скрипты контента могут видеть и изменять DOM страницы, как и обычные скрипты, загружаемые страницей.
В отличие от обычных скриптов страницы, скрипты контента могут:
- Выполнять междоменные запросы XHR.
- Использовать небольшой подмножество API WebExtension.
- Обмениваться сообщениями со своими фоновыми скриптами и таким образом косвенно получать доступ ко всем API WebExtension.
Скрипты контента не могут напрямую получить доступ к обычным скриптам страницы, но могут обмениваться сообщениями с ними, используя стандартный API window.postMessage().
Обычно, когда мы говорим о скриптах контента, мы имеем в виду JavaScript, но вы можете вставлять CSS на веб-страницы с помощью того же механизма.
См. статью скрипты контента для получения дополнительной информации.
Ресурсы, доступные в веб-среде
Ресурсы, доступные в веб-среде, — это ресурсы (например, изображения, HTML, CSS и JavaScript), которые вы включаете в расширение и хотите сделать доступными для скриптов контента и скриптов страниц. Ресурсы, доступные в веб-среде, могут быть ссылаются скриптами страниц и скриптами контента с использованием специальной схемы URI.
Например, если скрипт контента хочет вставить в веб-страницы несколько изображений, вы можете включить их в расширение и сделать их доступными в веб-среде. Затем скрипт контента может создавать и добавлять теги img, которые ссылаются на изображения через атрибут src.
Для получения дополнительной информации см. документацию по ключу "web_accessible_resources" manifest.json.
© 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/Anatomy_of_a_WebExtension