此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。

View in English Always switch to English

Battery Status API

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Battery Status API,更常被稱為 Battery API,提供有關系統電池充電狀態的資訊,並允許你透過事件通知來得知電池電量或充電狀態的變化。這可以用來調整應用程式的資源使用,以在電池電量低時減少耗電,或者在電池耗盡前儲存變更以防止資料遺失。

備註:此 API 無法在 Web Worker 中使用(不會透過 WorkerNavigator 暴露)。

介面

BatteryManager

提供有關系統電池充電狀態的資訊。

擴展至其他介面

返回一個 Promise,其會兌現為一個 BatteryManager 物件。

範例

在此範例中,我們監聽充電狀態(是否插電充電中)以及電池電量和時間的變化。這是透過監聽 chargingchangelevelchangechargingtimechangedischargingtimechange 事件來完成的。

js
navigator.getBattery().then((battery) => {
  function updateAllBatteryInfo() {
    updateChargeInfo();
    updateLevelInfo();
    updateChargingInfo();
    updateDischargingInfo();
  }
  updateAllBatteryInfo();

  battery.addEventListener("chargingchange", () => {
    updateChargeInfo();
  });
  function updateChargeInfo() {
    console.log(`電池正在充電嗎?${battery.charging ? "是" : "否"}`);
  }

  battery.addEventListener("levelchange", () => {
    updateLevelInfo();
  });
  function updateLevelInfo() {
    console.log(`電池電量:${battery.level * 100}%`);
  }

  battery.addEventListener("chargingtimechange", () => {
    updateChargingInfo();
  });
  function updateChargingInfo() {
    console.log(`電池充電時間:${battery.chargingTime} 秒`);
  }

  battery.addEventListener("dischargingtimechange", () => {
    updateDischargingInfo();
  });
  function updateDischargingInfo() {
    console.log(`電池放電時間:${battery.dischargingTime} 秒`);
  }
});

參見規範中的範例

規範

Specification
Battery Status API

瀏覽器相容性

api.BatteryManager

api.Navigator.getBattery

參見