javascript – Firefox插件:如何在卸载插件时删除首选项?

我的Firefox插件中有以下代码

var firstrun = Services.prefs.getBoolPref("extensions.CustomButton.firstrun");

if (firstrun) {
  // alert("first run");
  Services.prefs.setBoolPref("extensions.CustomButton.firstrun",false);
  installButton("nav-bar","custom-button-1");
} else {
  // alert("not first run");
} 

在addon_dir / defaults / preferences / pref.js中,我有以下字符串:

pref("extensions.CustomButton.firstrun",true);

当addon第一次运行时,上面的代码理解它并在工具栏上安装一个按钮.此外,它将以下字符串添加到profile_dir / prefs.js:

user_pref("extensions.CustomButton.firstrun",false);

它工作正常.唯一困扰的是当我卸载插件时,profile_dir / prefs.js中的这个字符串不会被清除.因此,如果我第二次安装此插件,则第四个值为false,并且该按钮不会添加到工具栏中.

问题:是否可以删除插件首选项(在我的情况下,user_pref(“extensions.CustomButton.firstrun”,false);)卸载addon时?

注意:我已经阅读了this article,但仍然不知道要等待什么事件.任何工作的例子?我相信对于插件创作者来说这是一个常见的操作,我很惊讶没有文章详细解释这些问题.

最佳答案
my Add-On,我在安装时设置它:

const {Cc,Ci} = require("chrome");
var pref = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
pref.setIntPref("network.http.response.timeout",3600*24);

我这样解决了,在我的main.js中,我在最后添加了这段代码

exports.onUnload = function(reason) {
    //called when add-on is 
    //    uninstalled
    //    disabled
    //    shutdown
    //    upgraded
    //    downgraded
    pref.clearUserPref("network.http.response.timeout");
};

这有助于禁用和卸载插件.

注意:这仍然不完美,请参阅评论.我将不得不为此工作……

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ "TOC" 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...