storage

使浏览器扩展能够储存及获取数据,以及监听储存的数据的变化。

此存储系统 API 基于 Web Storage API, 并有少许不同。

为了使用该 API,你需要在manifest.json文件包含"storage"权限。每一个浏览器扩展有自己的储存区域,每一个储存区域又分为几种不同的存储类型。

虽然此 API 类似于 Window.localStorage,但仍建议你不要在插件中使用 Window.localStorage。当用户由于隐私原因清除历史浏览记录及数据时,火狐会将在浏览器扩展使用 localStorage API 存储的数据一并清除。而使用 storage.localAPI 存储的数据将会恰当保留。

类型

storage.StorageArea

代表存储区域的对象

storage.StorageChange

代表改变一个储存区域的对象

属性

storage 有 3 个属性,每一个代表不同的存储区域。

storage.sync

表示一个同步的储存区域。在此区域的数据通过浏览器进行同步,用户可通过登录使用不同的设备访问到浏览器所有可用的实例对象。

storage.local

表示一个本地的存储区域。此区域的数据属于其所在的插件。

storage.managed

表示管理的存储区域。此区域的数据由本域名下的管理员设置且对该插件是只读的。试图修改此区域数据会得到一个错误。

事件

storage.onChanged

当 storage 有数据变化时,此事件将被触发。

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Firefox for Android
Safari on iOS
storage
StorageArea
StorageArea.clear
StorageArea.get
Supports empty key
StorageArea.getBytesInUse
StorageArea.onChanged
StorageArea.remove
Supports empty key
StorageArea.set
StorageArea.setAccessLevel
StorageChange
local
local.clear
local.get
Supports empty key
local.getBytesInUse
local.onChanged
local.remove
Supports empty key
local.set
managed
managed.clear
managed.get
managed.getBytesInUse
managed.onChanged
managed.remove
managed.set
onChanged
session
session.QUOTA_BYTES
session.clear
session.get
Supports empty key
session.getBytesInUse
session.onChanged
session.remove
Supports empty key
session.set
session.setAccessLevel
sync
sync.clear
sync.get
Supports empty key
sync.getBytesInUse
sync.onChanged
sync.remove
Supports empty key
sync.set

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
See implementation notes.

备注: "Chrome 不兼容"这部分来源于 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities 使用WebExtChromeCompat macro.

如果需要更新这部分,请编辑 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities, 然后刷新页面即可看见所做更改。

在 Edge 中的不兼容

Promises 在 Edge 中不被支持,使用 callbacks 代替。

示例扩展

备注: 这个 API 基于 Chromium 的 chrome.storage API。这篇文档也来源于 Chromium 代码中的 storage.json