偏好设置¶
本文档旨在概述 DevTools 中使用的偏好设置 API,它不是关于 DevTools 中可用偏好设置列表的实际文档。
概述¶
偏好设置允许您将字符串、数字、布尔值保存和读取到偏好设置存储中,该存储与配置文件绑定。偏好设置还可以具有默认值。
处理偏好设置的技术解决方案取决于您是将 DevTools 作为 Firefox 面板进行测试,还是使用 Launchpad 运行的独立工具。
偏好设置类型¶
DevTools 依赖于 nsIPrefBranch 进行偏好设置,它支持不同类型的偏好设置
整数
布尔值
字符
字符串
根据您需要存储的数据选择合适的类型。如果您需要存储 JavaScript 对象或数组,推荐的方式是
使用
String
类型的偏好设置使用 JSON.stringify 保存
使用 JSON.parse 读取
请注意,nsIPrefBranch 还支持 Complex
类型,但此类型在 Launchpad 中运行时不受支持。
读取和更新偏好设置¶
nsIPrefBranch 和 nsIPrefService 的 API 文档¶
DevTools 依赖于 Services.pref 来处理偏好设置。您可以访问此服务的 API 文档:
如果您使用的是 Launchpad,请注意,仅实现了 nsIPrefService 方法的一个子集(addObserver 和 removeObserver)。Launchpad 依赖于 devtools-module 提供的服务 shim 文件(GitHub 上的代码)。
Services.pref.get* 和 Services.pref.set*¶
您需要了解和使用的主要 API 是 getter 和 setter。
Services.pref.getIntPref(prefName, defaultValue);
如果找不到偏好设置且您没有传递默认值,此方法将抛出错误!Services.pref.setIntPref(prefName, prefValue)
如果提供的 value 与偏好设置类型不匹配,此方法将抛出错误!
这些 API 对于每种偏好设置类型都非常相似。
创建新的偏好设置¶
调试器特定的偏好设置应位于 devtools/client/preferences/debugger.js 中。除此之外,大多数新的偏好设置都应位于 browser/app/profile/firefox.js 中,该文件仅适用于桌面版 Firefox。如果偏好设置即使在未发布 DevTools 客户端时也应可用(例如在 Fennec 上),则应将其放在 modules/libpref/init/all.js 中,该文件用于所有产品中的偏好设置。
使用 Launchpad 的项目¶
在撰写本文档时,使用 Launchpad 的项目必须复制偏好设置的默认定义。
debugger.html:更新 src/utils/prefs.js
netmonitor:更新 index.js
webconsole:更新 local-dev/index.js
检查偏好设置¶
根据您正在处理的项目,偏好设置的存储方式不同,但始终可以进行检查。
在 Firefox 中,您可以打开一个选项卡到 about:config 并按偏好设置名称搜索。
在 Launchpad 中,偏好设置实际上保存到 localStorage。在您的 Launchpad 应用程序上打开 DevTools 并检查本地存储内容。您应该会看到以 Services.prefs:
为前缀的条目。您只会看到用户特定值覆盖默认值时的偏好设置。