Battery Status API 已被主流浏览器弃用或限制,仅可通过 navigator.getBattery() 获取电量信息,但需检查兼容性、处理权限拒绝,并监听 levelchange 和 chargingchange 事件;实际项目中不推荐使用。

直接调用 navigator.getBattery() 获取电池对象,然后监听或读取其属性即可,但要注意兼容性和权限限制。
检查 API 是否可用并获取电池对象
不是所有浏览器都支持 Battery Status API,且现代浏览器(如 Chrome 120+、Firefox)已逐步弃用或限制该 API。使用前需先判断:
- 检查
'getBattery' in navigator是否为true - 调用
navigator.getBattery()返回一个 Promise,成功后解析出BatteryManager实例 - 若 Promise 拒绝(如用户拒绝权限、无电池设备、隐私模式),需做好降级处理
读取当前电量与状态信息
从返回的 BatteryManager 对象中可直接访问以下只读属性:
-
level:电量百分比(0–1,如0.63表示 63%) -
charging:是否正在充电(true/false) -
chargingTime:预估充满剩余秒数(Infinity表示已满或无法估算;0表示已满) -
dischargingTime:预估耗尽剩余秒数(Infinity表示未放电或无法估算)
注意:level 和 charging 通常立即可用;chargingTime 和 dischargingTime 在部分系统上可能返回 NaN 或 Infinity,需做安全判断。
立即学习“Java免费学习笔记(深入)”;
监听电量变化事件
电量数据是动态的,应通过事件监听实时响应变化:
battery.addEventListener('chargingchange', () => {...})battery.addEventListener('levelchange', () => {...})battery.addEventListener('chargingtimechange', () => {...})battery.addEventListener('dischargingtimechange', () => {...})
推荐至少监听 levelchange 和 chargingchange,覆盖主要使用场景(如低电量提醒、省电模式切换)。
实际使用注意事项
该 API 当前受限较多,需特别注意:
- 仅在 HTTPS 环境下可用(本地
localhost除外) - Chrome 自 120 版本起默认禁用,需用户手动开启
chrome://flags/#battery-status-api(不适用于生产) - Firefox 已完全移除支持(自 v115 起)
- Safari 从未实现该 API
- 移动 WebView(如 iOS WKWebView、Android Chrome WebView)基本不可用
因此,它已不适合用于正式项目,仅建议用于调试、演示或特定企业内网环境。如需类似功能,可考虑结合 Web App Manifest 的 display: 'standalone' + 前端逻辑模拟低电量提示,或通过原生桥接(如 Capacitor / Cordova)调用设备原生电池 API。


















