Chrome扩展中navigator.getBattery()失效,求替代方案
你需要使用Chrome扩展专属的chrome.system.battery API替代标准Web API navigator.getBattery(),具体操作如下:
1. 声明必要权限
在扩展的manifest.json中添加system.battery权限(同时保留你原本用到的power权限),否则无法调用该API:
{ "manifest_version": 3, // 其他配置项... "permissions": [ "system.battery", "power" ] }
2. 调整代码逻辑
用chrome.system.battery.getInfo()替换原有的navigator.getBattery(),修改后的函数如下:
function toggleBatterySaver(enable) { if (enable) { chrome.system.battery.getInfo((batteryInfo) => { // batteryInfo.level 取值范围为0-1,对应0%到100%的剩余电量 if (batteryInfo.level < 0.2) { chrome.power.requestKeepAwake("system"); } }); } else { chrome.power.releaseKeepAwake(); } }
补充说明
chrome.system.battery.getInfo()是Chrome扩展提供的同步回调式API,直接返回当前电池状态数据,无需Promise链式调用。- 返回的
batteryInfo对象包含level(剩余电量比例)、charging(是否处于充电状态)等字段,完全覆盖你的功能需求。
内容的提问来源于stack exchange,提问作者baranwalayush
相关产品推荐
相关产品推荐

