存储
允许扩展存储和检索数据,以及侦听存储项的更改。
存储系统基于 Web 存储 API,但也有一些差异。其中包括
- 它是异步的。
- 值的作用域限定为扩展,而不是特定域(即,所有后台上下文和内容脚本都可以使用同一组键/值对)。
- 存储的值可以是任何可 JSON 化的值,而不仅仅是
String
。其中包括:Array
和Object
,但仅限于其内容可以表示为 JSON 的情况,不包括 DOM 节点。在存储之前,您无需将值转换为 JSONStrings
,但它们在内部以 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
。