StorageManager: estimate() 方法

Baseline 2023
新推出

自 2023 年 9 月起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能無法在較舊的裝置或瀏覽器上使用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 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

瀏覽器相容性

另見