新增api navigator.getBattery
电池状态 API 中的 BatteryManager 接口提供了系统电池电量的一些信息。navigator.getBattery() 方法返回一个 promise 对象,该 promise 在完成状态时将返回一个 BatteryManager 接口。
属性
-
一个布尔值,说明当前电池是否正在充电。
-
BatteryManager.chargingTime(en-US) 只读一个数字,代表距离充电完毕还需多少秒,如果为 0 则充电完毕。
-
BatteryManager.dischargingTime(en-US) 只读一个数字,代表距离电池耗电至空且系统挂起需要多少秒。
-
BatteryManager.level(en-US) 只读一个数字,代表系统电量的水平,这个值放缩在 0.0 至 1.0 之间。
方法
方法继承自其父接口:EventTarget。
事件
-
当电池充电状态(
charging属性)更新时被触发。 -
当电池充电时间(
chargingTime(en-US) 属性)更新时被触发。 -
当电池断开充电的时间(
dischargingTime(en-US) 属性)更新时被触发。 -
当电池电量(
level(en-US) 属性)更新时被触发。
举个栗子
navigator.getBattery().then((battery) => {
function updateAllBatteryInfo() {
updateChargeInfo();
updateLevelInfo();
updateChargingInfo();
updateDischargingInfo();
}
updateAllBatteryInfo();
battery.addEventListener("chargingchange", () => {
updateChargeInfo();
});
function updateChargeInfo() {
console.log(`充电中? ${battery.charging ? "Yes" : "No"}`);
}
battery.addEventListener("levelchange", () => {
updateLevelInfo();
});
function updateLevelInfo() {
console.log(`电量百分比: ${battery.level * 100}%`);
}
battery.addEventListener("chargingtimechange", () => {
updateChargingInfo();
});
function updateChargingInfo() {
console.log(`距离充满还剩: ${battery.chargingTime} s`);
}
battery.addEventListener("dischargingtimechange", () => {
updateDischargingInfo();
});
function updateDischargingInfo() {
console.log(`还能撑: ${battery.dischargingTime} s`);
}
});
测试后小计
dischargingtimechange这个事件在断电后不会立即触发,在电量变化后会触发,但触发时机不确定,断电后电量100%的时候也会触发,level一直为1。- 断电中,
chargingTime值为infinite。 - 插电中,
dischargingtimechange值为infinite。
支持性
「Safari」和「Firefox」完全不支持。
「Chrome」和「Opera」基本完美支持(14年底后的版本都支持)
「Edge」20年后的版本支持。
这个支持性,基本和大多数业务场景无缘了。套壳app上可以用。场景略微有点窄。