StorageManager: estimate() 方法
注意:此功能在 Web Workers 中可用。
StorageManager 接口的 estimate() 方法用于向存储管理器查询当前 源 (origin) 占用的存储空间(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 # dom-storagemanager-estimate |
浏览器兼容性
加载中…