javascript - 观察偏好变化的函数每次变化触发 3 次

标签 javascript firefox-addon

我正在尝试在 Firefox 扩展中使用首选项。我能够创建和读取它们,但是当我尝试在它们发生更改时运行函数时,我遇到了问题。我正在使用 MDN 中建议的框架(经过修改,所以它可以达到我想要的效果)。 这是确切的代码:

observe: function(aSubject, aTopic, aData) {
if (aTopic != "nsPref:changed")
{
return;
}
switch (aData) {
    case "username":
        var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
        var username = prefManager.getCharPref("extensions.alexandriauplink.username");
        // extensions.myextension.pref1 was changed
        break;
    case "password":
        var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
        var password = prefManager.getCharPref("extensions.alexandriauplink.password");
        alert(password);
        break;
}
var password = prefManager.getCharPref("extensions.alexandriauplink.password");
var username = prefManager.getCharPref("extensions.alexandriauplink.username");
alert( "username:" + username +"|" + "password:" + password);
}

问题是,当我更改选项对话框中的首选项时,每个更改的首选项都会触发此功能 3 次。 如果您能提供帮助,请先致谢。

最佳答案

正如评论者指出的那样,这是由于 Firefox 的多个窗口打开而引起的 - 每个窗口都触发了该事件。

关于javascript - 观察偏好变化的函数每次变化触发 3 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471396/

相关文章:

javascript - 如何将文本框值设置为隐藏字段

javascript - 使用 Officegen 和 html 创建 Docx 文件

javascript - forEach 数组中仅添加 JavaScript 中的最后一个值

javascript - Jquery 观察者模式

javascript - 如何添加:hover and click event to element same time?

firefox - ff HttpRequester 插件 - 上传带有发布数据的文件

javascript - 选项卡内容脚本中未调用 setInterval

javascript - 火狐扩展不工作

firefox - 从 Greasemonkey 脚本访问安全 cookie?

javascript - 使 Firefox 中的面板永远保持打开状态