Spec-Zone.ru › Web Extensions

Архитектура расширения

Расширение состоит из набора файлов, упакованных для распространения и установки. В этой статье мы кратко рассмотрим файлы, которые могут присутствовать в расширении.

manifest.json

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

Файл манифеста также может содержать указатели на несколько других типов файлов:

Фоновые скрипты

Скрипты, которые реагируют на события браузера.

Иконки

Для расширения и любых кнопок, которые оно может определять.

Боковые панели, всплывающие окна и страницы настроек

HTML-документы, которые предоставляют контент для различных компонентов пользовательского интерфейса.

Скрипты контента

JavaScript, включённый в расширение, который вы вставите в веб-страницы.

Ресурсы, доступные в веб-среде

Обеспечивают доступ к упакованному контенту для веб-страниц и скриптов контента.

The components of a web extension. The manifest.JSON must be present in all extensions. It provides pointers to background pages, content scripts, browser actions, page actions, options pages, and web accessible resources. Background pages consist of HTML and JS. Content scripts consist of JS and CSS. The user clicks on an icon to trigger browser actions and page actions and the resulting pop-up consists of HTML, CSS, and JS. Options pages consist of HTML, CSS, and JS.

См. страницу справки 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

Spec-Zone.ru

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