battery status api 因隐私风险被废弃,chrome 63 起彻底移除,navigator.getbattery() 失效,无标准替代方案,开发者应删除相关代码并采用通用节电策略。

Battery Status API 已被废弃,现代浏览器不再支持。它曾是早期 Chrome(约 2012–2016)中用于获取设备电池信息的实验性接口,但因隐私和安全问题(例如可被用于指纹追踪)被 W3C 废弃,并于 Chrome 63(2017 年底)起彻底移除。目前没有标准替代方案。
为什么 Battery Status API 被弃用
该 API 允许网页读取以下敏感信息:
- 电池是否正在充电(
charging) - 剩余电量百分比(
level) - 剩余续航时间估算(
chargingTime/dischargingTime) - 充电状态变化事件(
chargingchange、levelchange等)
这些数据组合起来具备较高设备识别能力,易被用于被动指纹采集,违背最小权限与隐私优先原则。主流浏览器(Chrome、Firefox、Safari、Edge)均已移除支持。
当前无法通过标准 Web API 获取电池状态
现代 JavaScript 中:
-
navigator.getBattery()返回 Promise,但已失效——调用会直接 reject(如TypeError: navigator.getBattery is not a function或返回 rejected promise) -
navigator.battery属性不存在,访问将返回undefined - 任何依赖该 API 的代码在当前浏览器中均无法运行
可行的替代思路(有限且非标准)
若业务场景确需粗略判断设备状态,可考虑间接方式,但需明确局限性:
- 检查页面可见性 + 用户交互模式:长时间无操作+页面隐藏,可能暗示设备休眠或电量不足,但完全不可靠
- 结合 Page Visibility API 和 performance.memory(仅 Chromium 实验性):内存压力可能间接关联系统资源紧张,但与电池无直接关系
-
客户端环境提示(非检测):在 PWA 中通过
beforeinstallprompt或安装横幅引导用户启用“后台同步”等节能不敏感功能,而非探测电池 -
服务端辅助(需用户授权):如 App 或 Electron 桌面应用可通过原生模块(如 Node.js 的
systeminformation)获取电池数据,但网页环境无法做到
开发者应如何应对
停止尝试兼容或降级处理该 API。正确做法是:
- 删除所有
navigator.getBattery()相关代码 - 避免在文档或示例中引用该 API
- 如需优化低电量体验,改用通用节电策略:暂停动画、降低轮询频率、延迟非关键请求、启用轻量渲染模式
- 关注 Web Platform Status 或 MDN 文档确认 API 状态,以 W3C 官方废弃声明为准
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











