偏好设置

本文档旨在概述 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 的项目必须复制偏好设置的默认定义。

检查偏好设置

根据您正在处理的项目,偏好设置的存储方式不同,但始终可以进行检查。

在 Firefox 中,您可以打开一个选项卡到 about:config 并按偏好设置名称搜索。

在 Launchpad 中,偏好设置实际上保存到 localStorage。在您的 Launchpad 应用程序上打开 DevTools 并检查本地存储内容。您应该会看到以 Services.prefs: 为前缀的条目。您只会看到用户特定值覆盖默认值时的偏好设置。