在firefox扩展首选项中获取正确的boolean值

时间:2013-07-05 04:27:00

标签: javascript firefox-addon

我有一个带有一些基本首选项的firefox扩展。其中一个首选项,即调用历史记录,具有布尔值。以下是xul文件的相关部分:

<preference id="pref_history" name="extensions.myext.history" type="bool"/>

...

<label control="history" value="Enable History:"/>
   <radiogroup id="history" preference="pref_history" orient="horizontal">
      <radio value="true" label="Yes"/>
      <radio value="false" label="No"/>
   </radiogroup>

在.js中,我们实例化了首选项服务。

var prefs = Components.classes["@mozilla.org/preferences-service;1"]
            .getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.myext.");
var history = prefs.getBoolPref("history");

如果历史记录值设置为true,我会向网站发送请求。几乎所有工作都正常,并根据首选项的设置配置正确的值。问题是我无法检查偏好设置历史记录的值是true还是false。我尝试过使用:

if(history == 'true'){
// never sends the request
}

if(history == true){
// lock the script
}

if(history){
// lock the script but seems the most obvious path to follow
}

if(prefs.getPrefType('extensions.myext.history')){
// always sends the request
}

它看起来很简单,但却让我头晕目眩!

== EDIT ==

我尝试在try catch中获取历史记录首选项的值。它应该在首选项不存在时(第一次运行它)抛出异常,但它不起作用。

try{
  var history = prefs.getBoolPref("history");
}
catch (err){
  prefs.setBoolPref('history', true);
}

0 个答案:

没有答案