WikiSort.ru - Программирование

о проекте

WebExtensions — технология создания расширений браузера, поддерживаемая большинством популярных браузеров. С помощью WebExtensions можно создавать расширения, которые могут незначительно менять пользовательский интерфейс браузера, модифицировать содержимое вебстраниц, изменять сетевые запросы браузера. WebExtensions создаются с помощью таких технологий как HTML, CSS, JavaScript и JSON.

Структура расширения

Расширение WebExtensions представляет собой zip-архив с почти произвольной внутренней структурой вложенных каталогов и файлов. Одним из немногих по структуре требований является наличие manifest.json - JSON-файла, устанавливающего протокол взаимодействия между браузером, расширением и пользователем браузера. Что может содержать манифест:

  • Общую информацию о расширении: наименование, версию, краткое и полное описание.
  • Перечень разрешений, которые нужны расширению для своей работы и которые пользователь браузера при установке расширения либо выдаёт, либо отвергает.
  • Подробности взаимодействия с браузером: т. н. фоновые страницы и фоновые JavaScript-сценарии, которые будут загружаться в браузер при старте; контент-скрипты - JavaScript-сценарии, которые будут загружаться на вебстраницы, удовлетворяющие заданным условиям; элементы пользовательского интерфейса браузера - страницы настройки, пиктограммы в панели инструментов, адресной строке и т. д.

Особенности архитектуры

Каждая фоновая страница расширения, страница настроек или страница выпадающего меню выполняется в отдельном процессе со своим контекстом. Взаимодействие между отдельными сценариями одного расширения, между разными расширениями а также расширением и браузером осуществляется с помощью системы именованных сообщений. Большинство запросов от расширения к браузеру, которые могут вызвать задержку (к примеру, чтение и запись различных данных), реализованы с помощью асинхронных API.

Поддержка различными браузерами

На ноябрь 2017 года расширения, созданные с помощью WebExtension, поддерживаются всеми основными браузерами:

Поддержка интернационализации

Расширение WebExtensions может поддерживать множество языков с помощью встроенной JavaScript-библиотеки i18n.js. Файлы, соответствующие различным локалям, имеют JSON-формат. С помощью специального синтаксиса некоторые фрагменты файла manifest.json (к примеру, наименование и описание расширения) могут быть связаны со строками из соответствующих локалей автоматически, но в основном ответственность за привязку различных элементов пользовательского интерфейса расширения к локализованным строкам лежит на разработчике расширения.

Аналоги

Аналогами технологии WebExtensions является XUL, которая использовалась в Mozilla Firefox до 57 версии и проприетарная технология Apple, которая применяется для создания расширений в браузере Safari.

Критика

Технология WebExtensions разрабатывалась как кроссбраузерная, но на практике уровень поддержки различных API у разных браузеров разный. В зависимости от того, какие возможности реализует расширение, может оказаться, что для публикации расширения в каталогах разных браузеров придётся создавать разные архивы. Разработчики браузеров пытаются решить проблему несовместимости с помощью руководств по миграции, что приводит только к усложнению разработки расширений.

Кроме того разработчики браузеров критикуют крайне слабые возможности WebExtensions по сравнению с XUL — например, WebExtensions не позволяет создавать независимые от посещаемых ресурсов панели, вынуждая разработчиков вторгаться непосредственно в код просматриваемых страниц или ограничиваться бедными возможностями иконки расширения. Яркий пример расширения, которому это помешало перейти на WebExtensions — виджет, отображающий последние новости из RSS-лент бегущей строкой.

Примеры расширений

Примеры расширений браузера, созданных с помощью технологии WebExtensions и работающих в трёх и более браузерах:

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2019
WikiSort.ru - проект по пересортировке и дополнению контента Википедии