tl; dr: Мы создали аддон firefox с помощью Addon SDK. Поскольку компиляция аддона - это один шаг в более крупной системе сборки (мы также компилируем для хром), наша система сборки упаковывает xpi вручную и не использует jpm. Однако мы использовали содержимое jpm-упакованного аддона в качестве шаблона для написания нашего собственного аддона. Это работает только для firefox> = 38. Есть ли простой способ заставить его работать для более ранних версий?Firefox Addon: bootstrap.js mit sdk/page-mod для версий <38.0
Детали:
Таким образом, мы пакаджем файл 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), а при включении плагина это должно быть снова включен.
Хм Я попробовал и не смог. Есть ли простой демо-пример/пример, который просто вводит скрипт контента и работает для firefox <38.0? – Heinzi
хорошо, вы делаете что-то очень необычное, так почему бы вам пример вашего дела? Во всяком случае, до того, как FF38 аддоны были упакованы с cfx, а не jpm, так что, возможно, вы можете построить его с этим и посмотреть на его внутренние элементы. – the8472