存储

允许扩展存储和检索数据,以及侦听存储项的更改。

存储系统基于 Web 存储 API,但也有一些差异。其中包括

  • 它是异步的。
  • 值的作用域限定为扩展,而不是特定域(即,所有后台上下文和内容脚本都可以使用同一组键/值对)。
  • 存储的值可以是任何可 JSON 化的值,而不仅仅是 String。其中包括:ArrayObject,但仅限于其内容可以表示为 JSON 的情况,不包括 DOM 节点。在存储之前,您无需将值转换为 JSON Strings,但它们在内部以 JSON 表示,因此需要它们是可 JSON 化的。
  • 可以在同一个 API 调用中设置或检索多个键/值对。

要使用此 API,您需要在 manifest.json 文件中包含 "storage" 权限

每个扩展都有自己的存储区域,可以将其分成不同类型的存储。

虽然此 API 类似于 Window.localStorage,但建议您不要在扩展代码中使用 Window.localStorage 来存储与扩展相关的数据。在用户出于隐私原因清除其浏览历史记录和数据的情况下,Firefox 会清除使用 localStorage API 由扩展存储的数据,而使用 storage.local API 保存的数据将在这些情况下正确地持久化。

您可以在开发者工具的 存储检查器 选项卡(可从 about:debugging 访问)的“扩展存储”项下检查存储的数据。

注意:存储区域未加密,不应用于存储机密用户信息。

类型

storage.StorageArea

表示存储区域的对象。

storage.StorageChange

表示存储区域更改的对象。

属性

storage 有四个属性,它们表示不同类型的可用存储区域。

storage.local

表示 local 存储区域。local 存储中的项目特定于安装扩展的机器。

storage.managed

表示 managed 存储区域。managed 存储中的项目由域管理员设置,并且对扩展是只读的。尝试修改此命名空间会导致错误。

storage.session

表示 session 存储区域。session 存储中的项目存储在内存中,不会持久化到磁盘。

storage.sync

表示 sync 存储区域。sync 存储中的项目由浏览器同步,并且在用户登录的所有浏览器实例(跨不同设备)中都可用。

事件

storage.onChanged

当任何存储区域中的一个或多个项目更改时触发。

浏览器兼容性

BCD 表仅在浏览器中加载

示例扩展

注意:此 API 基于 Chromium 的 chrome.storage API。本文档源自 Chromium 代码中的 storage.json