Firefox addon 未调用onsyncfrompreference

Firefox addon 未调用onsyncfrompreference,firefox-addon,xul,Firefox Addon,Xul,我正在编写一个Firefox插件,对于XUL元素,onsyncfrompreference似乎没有被调用(Firefox14)。以下是我的偏好: ... 这是规模: 这些日志目前只是用于调试,onsynctopreference在控制台上显示时被称为“没问题”,但是没有来自onsyncfrompereference的条目。我在defaults.js中定义了一个默认值,我使用Javascript解决了这个问题: <script type="text/javascript">

我正在编写一个Firefox插件,对于
XUL元素,
onsyncfrompreference
似乎没有被调用(Firefox14)。以下是我的偏好:


...
这是规模:



这些日志目前只是用于调试,
onsynctopreference
在控制台上显示时被称为“没问题”,但是没有来自
onsyncfrompereference
的条目。我在
defaults.js
中定义了一个默认值,我使用Javascript解决了这个问题:

<script type="text/javascript">

var loaded = false;
//load preferences
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
         .getService(Components.interfaces.nsIPrefService)
         .getBranch("extensions.bb");
prefs.QueryInterface(Components.interfaces.nsIPrefBranch2);

function loadpref() //call this in the prefwindow onload
{
    document.getElementById('bb-sensitivity').value = prefs.getCharPref('sensitivity');  
    loaded = true;
}

function setpref(sensitivity)
{
     if(loaded) //onchange for scale fires before onload for the window
     {
         prefs.setCharPref('sensitivity',sensitivity);
     }
}

</script>

var-load=false;
//加载首选项
var prefs=Components.classes[“@mozilla.org/preferences service;1”]
.getService(组件.接口.服务)
.getBranch(“extensions.bb”);
prefs.QueryInterface(Components.interfaces.nsIPrefBranch2);
函数loadpref()//在预加载窗口onload中调用此函数
{
document.getElementById('bb-sensitivity')。value=prefs.getCharPref('sensitivity');
加载=真;
}
函数setpref(灵敏度)
{
if(loaded)//在为窗口加载之前,对缩放火灾进行onchange
{
prefs.setCharPref(“灵敏度”,灵敏度);
}
}
以及比例元素:

<scale min="1" max="100" increment="1" 
    preference="pref-sensitivity" 
    id="bb-sensitivity" 
    onchange="setpref(this.value);"
    />

我暂时不回答这个问题,看看有没有其他人可以帮忙。我仍然希望以“正确”的方式执行此操作。

如果您查看,
onsyncfrompreference
将仅为“可编辑”元素调用。至于什么是“可编辑的”,你可以看到。某些元素始终被认为是可编辑的,其他元素必须明确指定
preference editable=“true”
属性。在您的情况下,后者意味着您的修复将如下所示: