Firefox addon Firefox插件:bootstrap.js mit sdk/page mod for versions<;38

Firefox addon Firefox插件:bootstrap.js mit sdk/page mod for versions<;38,firefox-addon,firefox-addon-sdk,firefox-addon-restartless,jpm,firefox-addon-bootstrap,Firefox Addon,Firefox Addon Sdk,Firefox Addon Restartless,Jpm,Firefox Addon Bootstrap,tl;dr:我们使用插件SDK创建了一个firefox插件。 由于编译插件是大型构建系统中的一个步骤(我们也为chrome编译),因此我们的构建系统手动打包xpi,而不使用jpm。然而,我们使用jpm打包插件的内容作为编写自己插件的模板。这只适用于firefox>=38。有没有一种简单的方法可以让它适用于早期版本 详细信息: 因此,我们打包了一个包含以下bootstrap.js的xpi文件: /* This Source Code Form is subject to the terms of

tl;dr:我们使用插件SDK创建了一个firefox插件。 由于编译插件是大型构建系统中的一个步骤(我们也为chrome编译),因此我们的构建系统手动打包xpi,而不使用jpm。然而,我们使用jpm打包插件的内容作为编写自己插件的模板。这只适用于firefox>=38。有没有一种简单的方法可以让它适用于早期版本

详细信息:

因此,我们打包了一个包含以下bootstrap.js的xpi文件:

/* 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对象,该对象随后处理插件的启用/禁用

这在Firefox40中运行良好,但我在38之前的版本中测试了它,但它不起作用,因为它无法运行bootstrap.js脚本


有没有一种简单的方法可以让它在早期的firefox版本中工作?不幸的是,很难找到这方面的文档。具体地说,我们不想中断启用/禁用插件,即如果用户禁用了插件,那么页面修改也应该被禁用(正如引导类所做的那样),并且在启用插件时,应该再次启用它。

仅将
require
作为JSM公开,因此,您只是在为您的方法使用新功能


对于较旧的版本,您必须创建一个自定义实例,然后才能使用它来满足需要。

Hm我尝试过,但失败了。是否有一个简单的插件演示/示例,只注入一个内容脚本,适用于firefox<38.0?好吧,你正在做一些非常非常规的事情,那么为什么会有一个示例适用于你的情况呢?无论如何,在FF38插件使用cfx而不是jpm打包之前,也许您可以使用它构建一个插件,并查看其内部。