我正在尝试创建一个自举的插件,只需将安装时的新标签页设置为新值,并在卸载时将其重置为旧值。
这是我的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);
}
答案 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上查看了所有内容:
然后我看到
prefs
然后它链接到nsIPrefBranch
并记录了所有内容。nsIPrefBranch2
已被弃用,所以我知道它不是。MDN是你的朋友:)
答案 1 :(得分:2)
普通的自举加载项不会自动访问SDK,即没有require
。
nsIPrefBranch
,Services.jsm
等。