首页 文章

Firefox Addon:版本<38.0的bootstrap.js mit sdk / page-mod

提问于
浏览
3

tl;dr: 我们使用Addon SDK创建了一个firefox插件 . 由于编译插件是更大的构建系统中的一步(我们也为chrome编译),我们的构建系统手动打包xpi并且不使用jpm . 但是,我们使用jpm打包插件的内容作为编写我们自己的插件的模板 . 这仅适用于firefox> = 38 . 是否有一种简单的方法可以使它适用于早期版本?

Details:

所以我们打包一个包含以下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对象,然后该对象处理插件的启用/禁用 .

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

是否有一种简单的方法可以让它适用于早期的firefox版本?遗憾的是很难找到相关的文档 . 具体来说,我们不想破坏启用/禁用插件,即如果用户禁用插件,那么也应禁用page-mod(因为Bootstrap类会这样做),并且当启用插件时,它应该是再次启用 .

1 回答

  • 3

    require 公开为JSM仅为introduced recently,因此您只是为您的方法使用新功能 .

    对于旧版本,您必须创建一个自定义Loader实例,然后可以用它来要求 .

相关问题