我有一个Firefox扩展,实现了一堆可以从Firefox中的上下文菜单调用的小函数。我制作了一个首选项窗口,为每个首选项显示一个radiogroup,允许该功能显示在Firefox主菜单中,显示在由扩展程序创建的子菜单中,或隐藏。这对于每个扩展功能来说都是完全相同的,只改变以下内容:首选项ID,首选项名称,被叫功能名称和每个无线电组的标签。是否可以为每个函数创建包含这四个字符串的数组,然后动态定义所有的首选项,而不是为每个首选项复制和粘贴相同的代码?动态定义Firefox扩展首选项
我很确定可以动态地在我的偏好窗口中定义XUL。但是,我不确定使用pref()命令在默认文件夹中定义默认首选项(我不确定如何访问扩展中其他位置定义的字符串)。我也不确定是否可以动态定义preferences.xul文件的定义,或者是否需要键入它们。
另外,你认为这是个好主意还是坏主意?我认为这会使添加/删除功能更容易。
感谢您使用偏好设置API设置偏好的建议。我会尝试。在回复之前,我已经使用JSON将包含首选项的数组保存为字符串,但能够将它们保存为单独的首选项应该更清晰。 –
使用变更后的配置文件通知来初始化首选项是否很重要?我的扩展有一个init()函数,由一个“加载”事件监听器调用,所以我正在考虑将首选项设置在那里。我将不得不详细了解如何执行更改后的配置文件通知。 –
我使用我的init()函数实现了我的动态首选项,并且所有内容似乎都能正常工作。只是为了勾画出以防万一任何人在稍后看到:我将所有首选项存储为存储为主扩展对象中字段的字符串数组。然后我编写了一个函数来循环这个数组,并为每个字符串创建所有必要的XUL,并使用该字符串形成id,并将prefpane的onpaneload设置为该函数。另一个函数遍历数组,并在init()中将每个pref设置为默认值(如果未设置)。 –