firefox-addon учебник
Начало работы с firefox-addon
Поиск…
Вступление
Дополнения:
Дополнения Firefox обычно группируются в Extensions, а затем «другие типы» надстроек Firefox.
расширения
Расширения позволяют настраивать Firefox, добавляя или изменяя функциональные возможности Firefox. Некоторые из типов вещей, которые можно сделать с расширениями, включают:
- Измените, как появляются конкретные веб-сайты, их контент или как они взаимодействуют.
- Настройка пользовательского интерфейса Firefox
- Добавление дополнительных функций в Firefox
- Как изменить функции существующих функций Firefox
Расширения Firefox, в первую очередь, написаны на JavaScript с добавлением некоторых API JavaScript.
Устаревание и удаление всех типов расширений, кроме WebExtensions
Дополнения Firefox, особенно расширения, находятся в состоянии изменения в настоящий момент. Mozilla объявила и подтвердила, что они устарели все типы расширений Firefox, за исключением WebExtensions, и что все расширения, основанные на не-WebExtensions, будут отключены в Firefox 57, который запланирован на 2017-11-14 .
Типы расширений
Firefox имеет четыре типа расширений (все они обычно называются надстройками):
WebExtensions : Перемещение вперед, WebExtensions - единственный тип расширения Firefox, который будет поддерживаться. Эти надстройки описываются файлом manifest.json . Этот API аналогичен тому, что используется для расширений Google Chrome. Эти надстройки используют HTML и CSS в дополнение к Javascript. Хотя Mozilla заявила, что этот API - будущее расширений Firefox, этот API все еще находится в разработке. На данный момент вам, вероятно, лучше всего разрабатывать и тестировать надстройку WebExtension с Firefox Developer Edition или Firefox Nightly . Вы также должны внимательно следить за тем, какая версия Firefox требуется для функциональности, которую вы хотите использовать. Эта информация содержится в разделе «Совместимость браузера» на страницах документации MDN.
WebExtensions используют значительно отличающийся API, чем другие три типа расширений. Умышленно нет возможности использовать интерфейсы, предоставляемые любым из других типов надстроек.
Add-on SDK : [ устарело; запланировано для удаления ] Эти надстройки описаны в файле package.json, который изначально генерируется при выполнении
jpm init
. Эти расширения часто используютrequire()
для загрузки либо высокоуровневых , либо низкоуровневых API для взаимодействия с Firefox. Эти надстройки используют HTML и CSS в дополнение к Javascript. В настоящее время эти дополнения завернуты в бутстрапируемое расширение , когда они загружены для тестирования наjpm run
или объединены в .xpi файл поjpm xpi
для распределения (т.е. загрузить АМО / Mozilla). Другими словами, они являются загрузочными расширениями с оболочкой SDK.Предполагается, что Mozilla продолжает поддерживать дополнительные расширения на основе SDK до тех пор, пока расширение не использует
require("chrome")
, или иначе зависит от XUL , XPCOM и XBL .Большинство вещей, которые можно сделать в загрузочном расширении, можно выполнить в SDK Add-on. Однако многие из таких вещей обходят SDK, который лишает значительную часть преимуществ использования SDK Add-on.
Загружено : [ устарело; запланировано для удаления ] Эти расширения также обычно называются «без перезапуска», поскольку они были первым типом расширения Mozilla, который не требовал перезапуска приложения для загрузки и выгрузки надстройки. Тем не менее, restartless является дескриптором того, как они функционируют. Использование «restartless», поскольку имя этого типа надстройки запутанно, поскольку надстройки Add-on SDK и WebExtension также не требуют перезапуска приложения при загрузке или выгрузке надстройки. По этой причине существует тенденция больше не использовать «restartless» в качестве имени для этого типа надстройки.
Эти надстройки используют HTML и CSS в дополнение к Javascript. Многие также взаимодействуют с Firefox с помощью XUL .
У этих надстроек есть JavaScript-файл с именем bootstrap.js, который должен содержать точки входа (функции), которые вызывают для надстройки
startup()
,shutdown()
,install()
иuninstall()
.Эти надстройки содержат файл install.rdf, который описывает надстройку. Обычно они, но не всегда, также содержат файл chrome.manifest, который описывает, как файлы и каталоги в расширении связаны с приложением Mozilla (например, Firefox).
Большинство, но не все, из того, что можно сделать в расширениях overlay / XUL / Legacy, могут быть выполнены в загрузочных надстроек. Все, что можно сделать в SDK Add-on, можно выполнить в загрузочном расширении (дополнительные расширения SDK - это загрузочные надстройки с некоторыми уровнями API на основе JavaScript).
Mozilla заявила, что планирует отказаться от «надстроек, которые зависят от XUL , XPCOM и XBL ». Хотя не все загрузочные надстройки зависят от этих технологий, существует тенденция к тому, чтобы загрузочные надстройки работали на более низком уровне, чем надстройки надстройки SDK и WebExtension. Таким образом, они с большей вероятностью будут использовать эти технологии. Хотя есть некоторые, которые говорят, что все загрузочные надстройки планируются к устареванию, неясно, в чем дело. В конце концов, расширения SDK Add-on не устаревают (если они не используют
require("chrome")
или иначе зависят от XUL, XPCOM или XBL), а все расширения SDK Add-on являются загрузочными расширениями, только с оболочкой SDK ,Наложение / XUL / Наследие : [ устарело; запланированные для удаления ] Эти надстройки содержат файл install.rdf, который описывает файл надстройки и chrome.manifest, чтобы описать, как файлы надстройки связаны (например, накладывают) файлы приложения. Как дополнительные функции с приложением полностью зависят от отношений, описанных в файле chrome.manifest . Единственными исключениями для этого являются несколько вещей, таких как значки для расширения и файл, описывающий параметры расширения, указанные в файле install.rdf . Эти расширения взаимодействуют с приложением (например, Firefox) на очень низком уровне. Это, как правило, приводит к тому, что их вероятность ломается при внесении изменений в приложение.
Эти надстройки используют XUL, HTML и CSS в дополнение к Javascript. Некоторые также используют XPCOM и XBL .
Все расширения Overlay / XUL / Legacy планируются к устареванию.
Другие типы дополнений Firefox
Когда большинство людей думает о дополнениях Firefox, они думают о расширениях, описанных выше. Однако есть дополнительные типы надстроек Firefox:
- Темы [ частично устаревшие ] позволяют настраивать внешний вид Firefox. Прежде всего, предоставляя разные правила CSS всем частям браузера. «Полные темы» устарели и планируются для частичной замены несуществующим в настоящее время интерфейсом .
- Мобильные дополнения для Firefox для Android. В настоящее время поддерживаются все типы расширений Firefox, которые являются перезагруженными.
- Плагины поисковых систем используются для добавления дополнительных поисковых систем в панель поиска браузера.
- Пользовательские словари позволяют использовать проверку орфографии на дополнительных языках.
- Языковые пакеты добавляют дополнительные языки в пользовательский интерфейс Firefox.
- Плагины - это общие библиотеки для отображения содержимого, которое само приложение не может отображать изначально.
Этот «пример» в основном копируется с некоторыми изменениями из моего ответа Макиена на вопрос о стеке .
Некоторые части этого содержимого были скопированы или, по крайней мере, основаны на дополнительной странице в Mozilla Developer Network (MDN).
Это было первоначально опубликовано Makyen в разделе «Замечания» тега firefox-addon . Затем он был изменен Ondřej Doněk , который удалил лишний «за». В одном редактировании, выполненном nus , он был перенесен из «Замечаний» на закрепленный «пример» под названием «Введение». К сожалению, это привело к тому, что система потеряла информацию об атрибуции.
Установка временного дополнения
Чтобы протестировать надстройку, которую вы разрабатываете, вы, скорее всего, захотите установить ее в Firefox временно. Вы можете сделать это, загрузив его как временное дополнение . Для этого:
- Перейти к
about:debugging
- Нажмите «Загрузить временное дополнение»
- В сборщике файлов перейдите в каталог, содержащий файлы надстройки
- Выберите любой файл в папке
- Нажмите «Открыть»
Следующая анимация показывает загрузку надстройки с именем «aaaaaaaaaaaaaaaaaa - демо-надстройка» about:debugging
из about:debugging
и что надстройка появляется в следующем about:addons
:
В качестве временного надстройки вы можете загрузить либо распакованное дополнение (каталог, содержащий все файлы для надстройки, которые вы собираетесь упаковать в файл .xpi ), либо дополнение, которое упаковано в .xpi
архив. Временные надстройки не нужно подписывать . Временное дополнение остается установленным до тех пор, пока оно не будет удалено вручную, или перезапустится Firefox.
Документация Mozilla: временная установка в Firefox
WebExtensions
WebExtensions можно загружать как временные надстройки. Это можно сделать с помощью дополнительных файлов, распакованных или упакованных в файл .xpi .
Firefox Add-on SDK
Вы не можете загрузить Firefox Add-на расширение SDK в качестве временного дополнения без предварительной упаковки его в .xpi файл с jpm xpi
. В общем, вы будете использовать jpm run
чтобы протестировать расширение SDK надстройки Firefox.
Файлы, которые обычно редактируются для расширения SDK Add-on, не делают полного расширения без каких-либо дополнительных функций упаковки, а файл package.json переводится в файл install.rdf и, возможно, файл chrome.manifest . Этот процесс включает расширение Add-on SDK в дополнение Bootstrap / Restartless, которое понимается Firefox. Без этого процесса Firefox не сможет загрузить надстройку. Этот процесс выполняется jpm xpi
результате получается упакованный файл .xpi . Выполнение jpm run
также выполняет этот процесс, но сохраняет полученные файлы во временном местоположении и вызывает Firefox с установленным надстройкой.
Bootstrap / Restartless
Bootstrap / Безплатные надстройки могут быть загружены как временные надстройки. Это можно сделать с помощью дополнительных файлов, распакованных или упакованных в файл .xpi .
Наследие / Overlay / XUL
Наследие / Наложение / надстройки XUL не могут быть загружены в качестве временных надстроек.
Установка неподписанных надстроек
Чтобы установить расширение как нормальное дополнение в версии для версии или бета-версии Firefox больше или равно версии 48, расширение должно быть подписано Mozilla . Расширение подписывается путем отправки его в AMO . Как только он будет подписан, расширение можно установить на любую версию Firefox, которую он поддерживает. Для версий Firefox до версии 43 расширения не должны были подписаны Mozilla. Mozilla не должен подписывать типы надстроек, кроме расширений .
Вы можете установить беззнаковые расширения как обычные надстройки в другие версии Firefox (например, Firefox Developer Edition , Firefox Nightly , Unbranded Beta или Unbranded Release ), установив xpinstall.signatures.required
в false
в about:config
. Установка этой опции также была эффективной в версиях версии 43-48 и Beta Firefox. Установка этой опции неэффективна в версиях версии и бета-версии Firefox с версии 48 и далее.
Необходимость установки неподписанных надстроек во время разработки надстройки значительно снижалась благодаря доступности расширений в качестве временных надстроек . Временные надстройки не обязательно должны быть подписаны и могут быть загружены в любую текущую версию Firefox. Как следует из названия, основным недостатком временных надстроек является то, что они являются временными. Они должны быть переустановлены при перезапуске Firefox. Тем не менее, существуют случаи использования, когда желательно добавить надстройку как обычное, но без знака, надстройка вместо временного надстройки. Надстройка должна быть установлена как надстройка без знака, если необходимо, чтобы надстройка оставалась установленной даже после перезапуска Firefox. Это может быть желательно по целому ряду причин, в том числе: долгосрочное тестирование использования или тестирование функций добавления при запуске Firefox.
Установка надстроек для разработки
Надстройки могут быть установлены как:
- Обычные надстройки, которые устанавливаются до удаления
- Временные надстройки (только для расширений ): устанавливаются только до перезапуска Firefox или могут быть удалены вручную ранее.
- Использование
jpm run
(только SDK Add-on ): автоматически запускает Firefox с использованием временного профиля с загруженным надстройкой. - Использование
web-ext run
(только для WebExtensions ): автоматически запускает Firefox с использованием временного профиля с добавленным надстройкой как временное дополнение. По умолчанию отслеживает ваши файлы расширений для изменений и автоматически перезагружает ваше расширение при изменении файлов.
Обычные дополнения
Установка упакованных расширений (т. .xpi
) может быть простым перетаскиванием в окно Firefox, в котором выполняется профиль, в котором вы хотите его установить. Их также можно установить непосредственно, загрузив расширение из AMO . В зависимости от вашей цели (один профиль, все профили, все пользователи, какая ОС и т. Д.) Существуют другие варианты установки расширений .
Эти другие параметры включают в себя различные каталоги вне каталога профиля, в которые вы можете поместить файл .xpi, чтобы он был установлен для всех пользователей определенной версии Firefox или всех профилей конкретного пользователя. В Windows вы также можете установить расширение, добавив ключ в реестр Windows. В общем, эти другие каталоги не являются теми, в которые вы должны установить надстройку, на которой вы сейчас пишете. Тем не менее, они могут использоваться, чтобы убедиться, что у вас есть надстройки, которые вы используете для поддержки вашего тестирования / разработки, загружаемого в любой профиль Firefox или версию Firefox, которую вы используете. Например, разместив файл .xpi в <Firefox install directory>/browser/extensions
вы можете иметь расширение, доступное даже во временном профиле, создаваемом jpm run
(используется для тестирования расширений на основе SDK на дополнении Firefox).
Для разработки / тестирования вы можете иметь расширение в любой директории на своем локальном диске с помощью прокси-файла расширения Firefox (создать файл с именем в качестве расширения <em:id>
(в install.rdf для Bootstrap / Restartless и Overlay / Legacy) в каталоге расширений профиля, содержащем одну строку с полным путем в каталог, содержащий файлы расширения). Расширения, установленные таким образом, почти всегда будут беззнаковыми (см. Ниже). Таким образом, этот метод не очень полезен, если вы хотите установить расширение в версию или версию бета-версии Firefox.
Ограничения при установке обычных надстроек: надстройка подписи
Чтобы установить расширение как нормальное дополнение в версии для версии или бета-версии Firefox больше или равно версии 48, расширение должно быть подписано Mozilla . Расширение подписывается путем отправки его в AMO . Как только он будет подписан, расширение можно установить на любую версию Firefox, которую он поддерживает. Для версий Firefox до версии 43 расширения не должны были подписаны Mozilla. Mozilla не должен подписывать типы надстроек, кроме расширений .
Вы можете установить беззнаковые расширения как обычные надстройки в другие версии Firefox (например, Firefox Developer Edition , Firefox Nightly , Unbranded Beta или Unbranded Release ), установив xpinstall.signatures.required
в false
в about:config
. Установка этой опции также была эффективной в версиях версии 43-48 и Beta Firefox. Установка этой опции неэффективна в версиях версии и бета-версии Firefox с версии 48 и далее.
Тем не менее, вы можете полностью отключить проверку надстрочной подписи в Firefox на всех версиях, включая выпуск. Ответ на вопрос «Переполнение стека». Как отключить проверку подписи для надстроек Firefox? описывает, как это сделать.
Необходимость установки неподписанных надстроек для целей разработки была значительно снижена благодаря наличию установки расширений в качестве временных надстроек . Временные надстройки не обязательно должны быть подписаны и могут быть загружены в любую текущую версию Firefox. Как следует из названия, основным недостатком временных надстроек является то, что они являются временными. Они должны быть переустановлены при перезапуске Firefox. Тем не менее, существуют случаи использования, когда желательно добавить надстройку как обычное, но без знака, надстройка вместо временного надстройки. Надстройка должна быть установлена как надстройка без знака, если необходимо, чтобы надстройка оставалась установленной даже после перезапуска Firefox. Это может быть желательно по целому ряду причин, в том числе: долгосрочное тестирование использования или тестирование функций добавления при запуске Firefox.
Временные надстройки ( только для расширений )
Расширения WebExtensions, расширения для расширения на основе SDK и расширения без перезагрузки / загрузки могут быть установлены как временные надстройки из about:debugging
. Расширения могут быть загружены как временные надстройки в любой текущей версии Firefox. Временные надстройки не обязательно должны быть подписаны и могут быть загружены из распакованного (каталог с файлами) или упакованы (например, файл .xpi ).
Подробную информацию о временной установке расширений см. В разделе « Установка временного дополнения» .