本篇文章主要选取了几个有趣且有用的webapi进行介绍,分别介绍其用法、用处以及浏览器支持度

  • page lifecycle
  • onlineState(网络状态)
  • device orientation(陀螺仪,获取用户手机朝向)

  • battery status 获取用户手机电量

用法

window.addEventListener('blur',() => {})
window.addEventListener('visibilitychange',() => {
// 通过这个方法来获取当前标签页在浏览器中的激活状态。
switch(document.visibilityState){
case'prerender': // 网页预渲染 但内容不可见
case'hidden': // 内容不可见 处于后台状态,最小化,或者锁屏状态
case'visible': // 内容可见
case'unloaded': // 文档被卸载
}
});

用处:在当前标签页是count数量会自动增加,不在当前标签页时count会停止增加,这个API的用处就是用来响应我们网页的状态,比如说我们的页面是在播放视频或者是一个网页的游戏,你可以通过这个API来去做出对应的响应,暂停视频,游戏暂停等等。

online state(网络状态)

这个API就很简单了,就是获取当前的网络状态,同时也有对应的事件去响应网络状态的变化。

用法:网络中断了,我们可以通过这个API去响应

window.addEventListener('online',onlineHandler)
window.addEventListener('offline',offlineHandler)

device orientation(陀螺仪)

通过绑定事件来获取设备的物理朝向,可以获取到三个数值,分别是:

  • alpha:设备沿着Z轴的旋转角度
  • beta:设备沿着X轴的旋转角度
  • gamma:设备沿着Y轴的旋转角度

用法

window.addEventListener('deviceorientation',e => {
console.log('Gamma:',e.gamma);
console.log('Beta:',e.beta);
console.log('Alpha:',e.Alpha);
})

battery status

这个API就使用来获取当前的电池状态

用法:

// 首先去判断当前浏览器是否支持此API
if ('getBattery' in navigator) {
// 通过这个方法来获取battery对象
navigator.getBattery().then(battery => {
// battery 对象包括中含有四个属性
// charging 是否在充电
// level 剩余电量
// chargingTime 充满电所需事件
// dischargingTime 当前电量可使用时间
const { charging, level, chargingTime, dischargingTime } = battery;
// 同时可以给当前battery对象添加事件 对应的分别时充电状态变化 和 电量变化
battery.onchargingchange = ev => {
const { currentTarget } = ev;
const { charging } = currentTarget;
};
battery.onlevelchange = ev => {
const { currentTarget } = ev;
const { level } = ev;
}
})
} else {
alert('当前浏览器不支持~~~')

这是demo的URL:https://github.com/1921622004/webapi

文章来源,我这只做个个人的标记,挺有趣的

作者:awesome23

链接:https://juejin.im/post/5c1606d9f265da613d7bf7a4
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. GTD工具 Wunderlist使用心得总结
  2. Linux装无线驱动
  3. Mini projects #7 ---- Spaceship
  4. fir终端打包,亲测可用
  5. Canvas--2
  6. 纯js实现积木(div)拖动效果
  7. 从汇编看c++对静态成员的存取
  8. 利用Fiddler抓取手机APP数据包
  9. Angular4 后台管理系统搭建(9) - 用自定义angular指令,实现在服务端验证
  10. [转载] Dubbo架构设计详解
  11. Sublime Text 2 Plugin Installation
  12. Python selenium —— 一定要会用selenium的等待,三种等待方式解读
  13. 服务器、IP地址和域名之间有什么关系?
  14. 将服务器文件上传到ftp shell操作
  15. netstat lsof ps 常用场景
  16. 专题:CF图论杂题
  17. Linux下SVN server 的使用及权限配置
  18. 【附2】hystrix详述(2)- 配置
  19. 流程设计器jQuery + svg/vml(Demo5 - 撤消与重做)
  20. mysql数据库查询

热门文章

  1. 环境搭建:JDK--SSH--VIM--Hadoop--SybaseIQ
  2. MATLAB中的概率论与数理统计
  3. 操蛋的Django model------select_related() 主要用于一对一和一对多
  4. C#动态方法调用 提高程序的扩展性
  5. js Base64与字符串互转
  6. jquery/js不支持ie9以下版本的方法或属性
  7. c#.net常见字符串处理方法
  8. scss-比较运算符
  9. CSS3媒体查询总结
  10. 关于Java中的线程安全(线程同步)