Дополнение Firefox: bootstrap.js mit sdk/page-mod для версий < 38.0
tl;dr: Мы создали аддон Firefox, используя Addon SDK. Поскольку компиляция аддона - это один шаг в большей системе сборки (мы также компилируем для chrome), наша система сборки вручную упаковывает xpi и не использует jpm. Однако мы использовали содержимое упакованного аддона jpm в качестве шаблона для написания нашего собственного аддона. Это работает только для Firefox >=38. Есть ли простой способ заставить его работать на более ранних версиях?
Подробности:
Поэтому мы упаковываем xpi-файл, который содержит следующие bootstrap.js:
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { utils: Cu } = Components;
const rootURI = __SCRIPT_URI_SPEC__.replace("bootstrap.js", "");
const COMMONJS_URI = "resource://gre/modules/commonjs";
const { require } = Cu.import(COMMONJS_URI + "/toolkit/require.js", {});
const { Bootstrap } = require(COMMONJS_URI + "/sdk/addon/bootstrap.js");
const { startup, shutdown, install, uninstall } = new Bootstrap(rootURI);
Кроме того, xpi содержит index.js с реальным кодом. Затем этот index.js устанавливает скрипты содержимого для sdk / page-mod.
Таким образом, в файле bootstrap.js функции запуска / выключения связаны с объектом Bootstrap, который затем обрабатывает включение / отключение плагина.
Это хорошо работает в Firefox 40, но я протестировал его с версиями до 38, и он не работает, потому что он не может запустить скрипт bootstrap.js.
Есть ли простой способ заставить его работать на более ранних версиях Firefox? К сожалению, довольно сложно найти документацию по этому вопросу. В частности, мы не хотим прерывать включение / отключение аддона, т. Е. Если пользователь отключает аддон, то также должен быть отключен мод страницы (как это делает класс Bootstrap), а при включении плагина он должен быть снова включен