函数观察首选项的更改会针对每个更改触发 3 次
Function observing changes to preferences triggers 3 times for each change
我正在尝试在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的多个窗口被打开引起的 - 每个窗口都在触发事件。
相关文章:
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- 关于&从win8 RC转换为win8 RTM后,首选项弹出按钮为空
- 使用内容脚本中的“简单首选项”打开插件的选项页
- 根据语言首选项更改网站版本
- 在不使用Firefox的情况下编辑Firefox首选项
- Firefox插件:如何根据平台设置默认首选项
- JavaScript 类型强制首选项
- 首次运行时未发出首选项
- 在量角器测试中设置版边驱动程序首选项
- JavaScript 不会加载到首选项窗口中
- 通过配置.xml的 Opera 扩展首选项
- javascript 可以访问用户在控制面板上的区域和语言格式首选项
- Javascript cookie 用于保存用户首选项并使用共享首选项显示内容
- 如何在点击 javascript 警报时保留我的 Firefox 首选项
- 首选项.xul 和首选项.js之间的通信
- Firefox Addon Builder首选项-服务对我不起作用--为什么
- 使用 CSS(第一首选项)或 JavaScript(secnd 首选项)在引导程序中更改数据目标
- 如何存储谷歌浏览器扩展程序的首选项
- Firefox插件:如何在卸载插件时删除首选项
- 函数观察首选项的更改会针对每个更改触发 3 次