在Firefox中使用首选项

在Firefox中使用首选项,firefox,xul,Firefox,Xul,如何在Firefox中访问用户首选项?我有以下代码: var control = document.getElementById(control_id); if (control) { control.setAttribute('color', nsPreferences.copyUnicharPref(prefstr, default_val)); } 但当我运行此程序时,我得到以下结果: Error: nsPreferences is not defined Source file

如何在Firefox中访问用户首选项?我有以下代码:

var control = document.getElementById(control_id);
if (control) {
    control.setAttribute('color', nsPreferences.copyUnicharPref(prefstr, default_val));
}
但当我运行此程序时,我得到以下结果:

Error: nsPreferences is not defined
Source file: chrome://backgroundtoggle/content/options.xul
Line: 9

我在阅读Mozilla文档时遇到困难。如何使其满足我的要求?

看起来您需要在
.xul
文件中包含
nsUserSettings.js

<script type="application/x-javascript" src="chrome://global/content/nsUserSettings.js" />

这是定义
nsUserPreferences
的地方

有关
options.xul
文件的示例,请参阅。
script
标记应该是
prefwindow
的第一个子元素,以确保在您自己的代码加载之前加载它


补充资料
看起来像是一个不错的关于如何编写Firefox扩展的教程。它似乎很好地将mozilla.org上的所有相关信息整合到了一个地方,并在您需要了解有关主题的更多详细信息时包含到mozilla.org的链接。我真希望导航能好一点,但是你能做些什么呢?使用左侧的导航窗格并单击教程开始。您必须使用导航窗格浏览每个部分,我花了几秒钟才弄清楚,因为我正在页面上查找“下一个”和“上一个”链接。

有时您可以使用NSPPreferences,即使不包括脚本。我的猜测是,这是因为其他扩展为您加载了该脚本,使您相信一切正常。然后,一个拥有比您少得多的附加组件的用户尝试安装您的扩展,但它不起作用。鬼鬼祟祟的。实际上,我只是指这个答案,我注意到:“当你想把非
元素放到prefwindow中时,你应该把它们放在所有
之后。如果你把其他元素放在第一个
之前,你可能会看到切换窗格的奇怪行为。”这与Mike Spross说的一件事相矛盾。试试看,看看会发生什么。虽然您可能并不真的需要在prefwindow中使用该脚本,但只需要在主浏览器覆盖中使用。