firefox bootstrap插件:未执行安装事件

时间:2015-01-25 21:32:16

标签: javascript firefox firefox-addon firefox-addon-sdk

我正在尝试创建一个自举的插件,只需将安装时的新标签页设置为新值,并在卸载时将其重置为旧值。

这是我的bootstrap.js。我认为安装函数抛出异常,因为未定义require,但我不确定调试器是否执行我在Scratchpad中在正确范围内编写的代码。

我在某处读到api与bootstrap扩展相同,与附加sdk一样,所以要求应该没问题。如果不是这样的话,请你指点一个描述我可以在bootstrap.js中使用的代码的页面,我没有找到任何东西:(

function startup(data, reason){

}

function shutdown(data, reason){

}

function install(data, reason){
    var prev_new_tab_url = require("sdk/preferences/service").get("browser.newtab.url");
    var data = require("sdk/self").data;
    var url = data.url("startpage.html");
    require("sdk/preferences/service").set("browser.newtab.url", url);
    var ss = require("sdk/simple-storage");
    ss.storage.prev_new_tab_url = prev_new_tab_url;
}

function uninstall(data, reason){
    var ss = require("sdk/simple-storage");
    var prev_new_tab_url = ss.storage.prev_new_tab_url;
    require("sdk/preferences/service").set("browser.newtab.url", prev_new_tab_url);
}

2 个答案:

答案 0 :(得分:3)

来自:https://forums.mozilla.org/viewtopic.php?f=7&t=22621&sid=4ea13ebd794f85600d6dcbcf6cc590a7

  

在bootstrap中,你无法访问像这样的sdk。我不知道如何访问这些东西。

     

但我通过本地化完成了你想要的东西:D花费了10分钟:D

     

https://github.com/NoitForks/l10n/tree/setpref-install-uninstall

     

注意:卸载过程中本地化文件不可用的怪癖。所以我必须在测试ADDON_DISABLE的一个原因时将其移动到shutodwn proc。有意义的是,文件在卸载时不可用


你问:

  

您如何知道Services.prefs.getCharPref方法?


我回答说:

  

我首先导入了Services.jsm模块,然后我在MDN上查看了所有内容:

     

https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm?redirectlocale=en-US&redirectslug=JavaScript_code_modules%2FServices.jsm

     

然后我看到prefs然后它链接到nsIPrefBranch并记录了所有内容。 nsIPrefBranch2已被弃用,所以我知道它不是。

     

MDN是你的朋友:)

答案 1 :(得分:2)

普通的自举加载项不会自动访问SDK,即没有require

  1. 使用非SDK内容,例如nsIPrefBranchServices.jsm等。
  2. 或者首先编写SDK附加组件
  3. 或者自己为自己的插件连接SDK加载程序。只有我知道的除SDK附加组件以外的其他实例(heh)才是Scriptish