我有一个带有一些基本首选项的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);
}