StorageManager: estimate() 方法
注意: 此功能在 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 表格仅在浏览器中加载