getBattery API用法详解

本文介绍getBattery API的使用方法及注意事项。getBattery API是获取电源管理信息的API。

本文内容可以在https://www.lyz810.com/demo/battery/中查看相关Demo。
一、概述
navigator.getBattery是一个用于获取电源管理信息的API。它可以获取电源的连接状态、电池电量水平、剩余放电时间、剩余充电时间等于电源管理相关的参数。

二、兼容性
navigator.getBattery基本只能在Chrome及Firefox浏览器上使用,其他浏览器基本上都没戏。
Firefox:43+
Chrome:38+
Opera:25+

三、基本用法

  navigator.getBattery().then(function(batteryInfo){
    console.log(batteryInfo);
  });

navigator.getBattery返回一个Promise对象,通过then的第一个function,可以获取到电池状态信息。
其中batteryInfo对象如下:
batteryInfo.charging:电源状态,true表示电源接通(但是否充电不一定),false表示电源没有接通。
batteryInfo.chargingTime:充电时长,目前测试没有发现此数值除Infinity外还有其他值,可能与系统等因素有关。
batteryInfo.dischargingTime:剩余时长,在不接电源时此属性会有一个非Infinity的值,表示电池剩余时间的秒数。
batteryInfo.level:电池电量水平,范围0~1表示0%~100%。
batteryInfo.onchargingchange:当切换电源状态时触发,如插入电源和拔出电源。
batteryInfo.onchargingtimechange:目前未发现会触发事件,因为chargingTime总是Infinity。
batteryInfo.ondischargingtimechange:电池剩余时间改变时触发该事件。
batteryInfo.onlevelchange:在电池电量水平改变时触发。

四、注意事项
Firefox中电量水平的精度为0.1,会对电量进行四舍五入,如电量为95%时,Firefox电量显示为100%(1),当电量为94%时,Firefox电量显示为90%(0.9)
Chrome中电量水平的精度为0.01,能够精确的获取1%的电量差距
电池剩余时间估算可能与系统的电池剩余时间不同

Javascript原生base64编码解码函数btoa(atob)用法详解

window.btoa和window.atob分别编码与解码base64,它们在现代浏览器中受到广泛的支持。

一、兼容性

btoa和atob在除IE之外的浏览器上都能够得到良好的兼容:
IE:10+
Chrome:4+
Firefox:2+
Safari:3.1+
Opera:11.5+

二、编码base64函数btoa
提示:函数名中的b表示binary即原始的待编码数据,a表示ASCII,即编码后的结果(base64编码后,就只是纯的ASCII字符),btoa就是将binary的数据转为ASCII字符(串)。

用法:
console.log(btoa('Hello world!'));//SGVsbG8gd29ybGQh

三、解码base64函数atob
可以将base64字符串还原成二进制格式(通常是原始的字符串,JavaScript中字符串就是一种序列化的二进制数据)

用法:
console.log(atob('SGVsbG8gd29ybGQh'));//Hello world!

四、原始数据含非ASCII字符(例如中文)时的处理
执行下面的代码:
btoa('我是中文');
会有如下的报错信息:

Uncaught DOMException: Failed to execute ‘btoa’ on ‘Window’: The string to be encoded contains characters outside of the Latin1 range.(…)

说明只能对ASCII字符进行编码,对于中文来说,可以通过下面的方式进行编码:
console.log(btoa(unescape(encodeURIComponent('我是中文'))));//5oiR5piv5Lit5paH

解码方法:
console.log(decodeURIComponent(escape(atob('5oiR5piv5Lit5paH'))));//我是中文