动态定义Firefox扩展首选项

时间:2012-10-16 16:28:29

标签: firefox-addon xul

我有一个Firefox扩展,它实现了一系列可以从Firefox中的上下文菜单调用的小函数。我创建了一个首选项窗口,显示每个首选项的放射组,允许该功能显示在Firefox主菜单中,显示在扩展名创建的子菜单中,或隐藏。这与每个扩展功能完全相同,只有以下内容发生变化:首选项ID,首选项名称,被叫函数名称和每个无线电组的标签。是否可以为每个函数创建一个包含这四个字符串的数组,然后动态定义所有首选项,而不是为每个首选项复制和粘贴相同的代码?

我很确定可以动态地在我的首选项窗口中定义XUL。但是,我不确定使用pref()命令在defaults文件夹中定义默认首选项(我不确定如何访问扩展中其他位置定义的字符串)。我也不确定是否可以动态定义preferences.xul文件的定义,或者是否需要输入它们。

另外,你认为这是一个好主意还是坏主意?我认为它会使添加/删除功能更容易。

1 个答案:

答案 0 :(得分:1)

对我来说听起来不错。你可以在静态XUL文件中做任何事情,你可以通过使用DOM函数(包括preferences.xul的内容,无论它们是什么)创建XUL窗口的内容来动态地做。就默认值而言,如果没有设置值,您可以在浏览器启动时使用首选项API手动设置它们。您可以使用observer service来处理profile-after-change通知。使用preferences API检查您的首选项是否已设置值,如果没有,则将它们设置为您选择的默认值。

要检查pref是否已存在,请使用适当的nsIPrefBranch方法尝试获取它。如果抛出异常,则它不存在。