storage

允许扩展程序存储和检索数据,并监听存储项的变化。

存储系统基于 Web Storage API,但有一些区别。其他区别包括:

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

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

每个扩展程序都有自己的存储区域,可以分为不同类型的存储。

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

您可以在开发者工具箱的“Storage Inspector”标签页下的“Extension Storage”项目中检查存储的数据,该工具箱可通过 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

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

扩展程序示例

浏览器兼容性

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