新增api navigator.getBattery
电池状态 API 中的 BatteryManager
接口提供了系统电池电量的一些信息。navigator.getBattery()
方法返回一个 promise 对象,该 promise 在完成状态时将返回一个 BatteryManager
接口。
属性
-
BatteryManager.charging
只读一个布尔值,说明当前电池是否正在充电。
-
BatteryManager.chargingTime
(en-US) 只读一个数字,代表距离充电完毕还需多少秒,如果为 0 则充电完毕。
-
BatteryManager.dischargingTime
(en-US) 只读一个数字,代表距离电池耗电至空且系统挂起需要多少秒。
-
BatteryManager.level
(en-US) 只读一个数字,代表系统电量的水平,这个值放缩在 0.0 至 1.0 之间。
方法
方法继承自其父接口:EventTarget
。
事件
-
chargingchange
(en-US)当电池充电状态(
charging
属性)更新时被触发。 -
chargingtimechange
(en-US)当电池充电时间(
chargingTime
(en-US) 属性)更新时被触发。 -
dischargingtimechange
(en-US)当电池断开充电的时间(
dischargingTime
(en-US) 属性)更新时被触发。 -
levelchange
(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
。
支持性
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上可以用。场景略微有点窄。
本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!