StorageManager: estimate() 方法

安全上下文: 此功能仅在 安全上下文 (HTTPS) 中可用,在部分或所有 支持的浏览器 中可用。

注意: 此功能在 Web Workers 中可用。

StorageManager 接口的 estimate() 方法会向 Storage Manager 询问当前 来源 占用了多少存储空间 (usage) 以及有多少空间可用 (quota)。

此方法是异步操作的,因此它返回一个 Promise,该 Promise 在信息可用时解析。Promise 的执行处理程序在包含使用量和配额数据对象时调用。

语法

js
estimate()

参数

无。

返回值

一个 Promise,它解析为具有以下属性的对象

quota

以字节为单位的数值,它提供了一个保守的近似值,表示用户设备或计算机可用于网站来源或 Web 应用的总存储空间。尽管可能存在超过此数量的空间可用,但您不能依赖这种情况。

usage

以字节为单位的数值,近似表示网站或 Web 应用当前使用的存储空间,占可用空间 (如 quota 所示) 的百分比。单位是字节。

usageDetails 非标准

一个对象,其中包含按存储系统细分的 usage。所有包含的属性的 usage 都将大于 0,并且任何 usage 为 0 的存储系统都将从对象中排除。

注意: 返回的值不是精确的:由于压缩、重复数据删除以及出于安全原因的混淆,这些值将不精确。

您可能会发现 quota 在不同的来源之间有所不同。这种差异是基于以下因素:

  • 用户访问频率
  • 公共网站受欢迎程度数据
  • 用户参与信号,例如书签、添加到主屏幕或接受推送通知

异常

TypeError

如果无法获得本地存储货架,则抛出此异常。例如,如果当前来源是不透明来源,或者用户已禁用存储。

示例

在此示例中,我们获取使用量估计并向用户显示当前使用的存储容量百分比。

HTML

html
<label>
  You're currently using about <output id="percent"> </output>% of your
  estimated storage quota (<output id="quota"></output>).
</label>

JavaScript

js
navigator.storage.estimate().then((estimate) => {
  document.getElementById("percent").value = (
    (estimate.usage / estimate.quota) *
    100
  ).toFixed(2);
  document.getElementById("quota").value =
    (estimate.quota / 1024 / 1024).toFixed(2) + "MB";
});

结果

规范

规范
Storage 标准
# ref-for-dom-storagemanager-estimate

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅