Interested Article - WebExtensions
- 2020-12-31
- 1
WebExtensions — технология создания расширений браузера , поддерживаемая большинством популярных браузеров. С помощью WebExtensions можно создавать расширения, которые могут незначительно менять пользовательский интерфейс браузера, модифицировать содержимое вебстраниц, изменять сетевые запросы браузера. WebExtensions создаются с помощью таких технологий как HTML , CSS , JavaScript и JSON .
Структура расширения
Расширение WebExtensions представляет собой zip-архив с почти произвольной внутренней структурой вложенных каталогов и файлов. Одним из немногих по структуре требований является наличие manifest.json — JSON -файла, устанавливающего протокол взаимодействия между браузером, расширением и пользователем браузера. Что может содержать манифест:
- Общую информацию о расширении: наименование, версию, краткое и полное описание.
- Перечень разрешений, которые нужны расширению для своей работы и которые пользователь браузера при установке расширения либо выдаёт, либо отвергает.
- Подробности взаимодействия с браузером: так называемые фоновые страницы и фоновые JavaScript-сценарии , которые будут загружаться в браузер при старте; контент-скрипты — JavaScript-сценарии , которые будут загружаться на веб-страницы, удовлетворяющие заданным условиям; элементы пользовательского интерфейса браузера — страницы настройки, пиктограммы в панели инструментов, адресной строке и т. д.
Особенности архитектуры
Каждая фоновая страница расширения, страница настроек или страница выпадающего меню выполняется в отдельном процессе со своим контекстом. Взаимодействие между отдельными сценариями одного расширения, между разными расширениями а также расширением и браузером осуществляется с помощью системы именованных сообщений. Большинство запросов от расширения к браузеру, которые могут вызвать задержку (к примеру, чтение и запись различных данных), реализовано с помощью асинхронных API .
Поддержка различными браузерами
На ноябрь 2017 года расширения, созданные с помощью WebExtension, поддерживаются всеми основными браузерами:
- Google Chrome и браузерами, основанными на проекте Chromium : Opera, UCBrowser, Яндекс. Браузер и т. д.
- Firefox — начиная с 45 версии
- Microsoft Edge
- Safari — начиная с 14 версии
Поддержка интернационализации
Расширение WebExtensions может поддерживать множество языков с помощью встроенной JavaScript -библиотеки i18n.js. Файлы, соответствующие различным локалям, имеют JSON -формат. С помощью специального синтаксиса некоторые фрагменты файла manifest.json (к примеру, наименование и описание расширения) могут быть связаны со строками из соответствующих локалей автоматически, но в основном ответственность за привязку различных элементов пользовательского интерфейса расширения к локализованным строкам лежит на разработчике расширения.
Аналоги
Аналогами технологии WebExtensions является XUL , которая использовалась в Mozilla Firefox до 57 версии и проприетарная технология Apple , которая применяется для создания расширений в браузере Safari .
Критика
Технология WebExtensions разрабатывалась как кроссбраузерная, но на практике уровень поддержки различных API у разных браузеров разный. В зависимости от того, какие возможности реализует расширение, может оказаться, что для публикации расширения в каталогах разных браузеров придётся создавать разные архивы. Разработчики браузеров пытаются решить проблему несовместимости с помощью руководств по миграции, что приводит только к усложнению разработки расширений.
Кроме того разработчики браузеров критикуют крайне слабые возможности WebExtensions по сравнению с XUL — например, WebExtensions не позволяет создавать независимые от посещаемых ресурсов панели, вынуждая разработчиков вторгаться непосредственно в код просматриваемых страниц или ограничиваться бедными возможностями иконки расширения. Яркий пример расширения, которому это помешало перейти на WebExtensions — виджет, отображающий последние новости из RSS-лент бегущей строкой.
Примеры расширений
Примеры расширений браузера , созданных с помощью технологии WebExtensions и работающих в трёх и более браузерах:
- от 27 ноября 2017 на Wayback Machine
- от 27 ноября 2017 на Wayback Machine
- от 4 декабря 2017 на Wayback Machine
Ссылки
- от 28 ноября 2017 на Wayback Machine описание extension API для браузера Google Chrome
- от 14 ноября 2017 на Wayback Machine документация по расширениям на сайте Opera Software
- от 1 декабря 2017 на Wayback Machine описание WebExtensions на сайте Mozilla Developer Network
- от 1 декабря 2017 на Wayback Machine описание WebExtensions для Microsoft Edge
- от 11 декабря 2017 на Wayback Machine Browser Extensions, W3C Draft Community Group Report
- 2020-12-31
- 1