现代浏览器已废弃 Battery Status API,Chrome 80+、Firefox 109+默认禁用或移除,Safari从未支持;navigator.getBattery() 在HTTPS下仍报SecurityError或返回undefined,纯前端无标准替代方案。
现代浏览器已废弃 Battery Status API,无法可靠获取电池信息。 Chrome 从 80 版本起移除支持,Firefox 在 109 版本后默认禁用,Safari 从未实现。你看到的旧教程或示例代码现在基本都失效了。
navigator.getBattery() 总是报错或返回 undefined这是最常见现象:调用后 Promise 拒绝、抛出 SecurityError,或直接返回 undefined。根本原因不是代码写错,而是浏览器策略变更:
navigator.getBattery() 不再触发权限提示——它被静默禁用,而非拒绝授权纯前端 HTML/JS 已无标准途径。可行路径取决于你的实际场景:
chrome.runtime.sendNativeMessage 调用本地 Native Host 程序(如用 Python 读取 /sys/class/power_supply/BAT0/capacity),但需用户手动安装和授权,跨平台成本高app.isPackaged + powerMonitor 模块监听 onBatteryStatus 事件,注意 Windows/macOS/Linux 返回字段不同(如 isBatteryPowered vs dischargingTime)getBattery()
MDN 页面仍保留文档,但底部小字写着 “Deprecated. Not for use in new websites.”。实测中:
立即学习“前端免费学习笔记(深入)”;
navigator.getBattery() 直接返回 Promise.reject(new DOMException("Operation is insecure."))
about:config 中设 dom.battery.enabled = true,也只返回空 BatteryManager 对象(level 恒为 1,charging 恒为 true)if ('getBattery' in navigator) 已失去意义——它存在但不可用真正要做的,不是修复某个函数调用,而是放弃依赖电池状态做核心逻辑。比如“低电量自动休眠”这类功能,必须降级为基于时间、用户交互或网络状态的启发式判断。浏览器把这块关死了,就没留缝。
小米路由器ax1800拆解(如何拆解小米路由器AX1800)
小米路由器从旧路由器怎么设置(小米路由器从旧路由器设置方法)
小米路由器从旧路由器导入宽带设置失败(小米路由器从旧路由器导入宽带设置失败的原因是什么)
小米ax6000和红米ax6000哪个做主路由(小米AX6000和红米AX6000哪个更适合做主路由)
小米ax6000和红米ax5400电竞版哪个好(小米ax6000和红米ax5400电竞版哪个适合你)
小米ax6000刷openwrt教程(小米ax6000如何刷openwrt)