WebExtensions

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 и работающих в трёх и более браузерах:

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.