javascript实现手机震动API代码


Posted in Javascript onAugust 05, 2015

现代浏览器里提供的新的API越来越倾向于移动手机应用,而不是传统的桌面应用,比如 javascript地理位置信息API 。另外一个只针对手机应用的JavaScript API就是 振动(Vibration) API 。很明显,这个API就是允许mobile程序员使用JavaScript调用手机的振动功能,并且能设定振动的方式和时长。

javascript实现手机震动API代码

判断浏览器对振动API的支持情况
一个好的习惯就是在使用之前要检查一下当前你的应用环境、浏览器是否支持振动API。下面就是检测的方法:

// Standards ftw!

var supportsVibrate = "vibrate" in navigator;

在 window.navigator 对象里就只有一个关于振动的API: vibrate 。

振动API基础应用
这个 navigator.vibrate 函数可以接受一个数字参数,也可以接受一个数字数组,当使用数组参数时,奇数位的数值是震动秒数,偶数位为等待秒数。

// 振动1秒

navigator.vibrate(1000);

// 振动多次
// 参数分别是震动3秒,等待2秒,然后振动1秒
navigator.vibrate([3000, 2000, 1000]);

如果想停止震动,你只需要向 navigator.vibrate 方法里传入0,或一个空数组:

// 停止振动

navigator.vibrate(0);

navigator.vibrate([]);

需要提醒的是,对 navigator.vibrate 方法的调用并不会引起手机循环振动;当参数是一个数字时,振动之后发生一次,然后就停止下来。当参数是数组时,震动会按数组里的值震动,然后就停止振动。

持续震动
我们可以简单的使用 setInterval 和 clearInterval 方法产生让手机持续震动的效果:

var vibrateInterval;
// Starts vibration at passed in level
function startVibrate(duration) {
navigator.vibrate(duration);
}
// Stops vibration
function stopVibrate() {
// Clear interval and stop persistent vibrating 
if(vibrateInterval) clearInterval(vibrateInterval);
navigator.vibrate(0);
}
// Start persistent vibration at given duration and interval
// Assumes a number value is given
function startPeristentVibrate(duration, interval) {
vibrateInterval = setInterval(function() {
startVibrate(duration);
}, interval);
}

上面的这段代码只是针对振动参数是一个数字的情况,如果参数是数组,你还需要计算一下它的总共持续时间,然后根据它的特征来进行循环。

使用振动(Vibration) API的场景
这个API显然是针对移动手机设备的。当开发手机WEB移动应用时,它是一个很好的警示工具,当在开发Web游戏或多媒体应用时,这个振动功能更是不可或缺的好技术。比如说,当用户在用一个手机玩你的WEB游戏时,当游戏中发生爆炸,而你让手机也跟随着振动,是不是一种很出色的用户体验?

你对这个JavaScript振动API的感觉如何?是认为它会很快流行起来?还是没有多大用处?

Javascript 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
javascript web对话框与弹出窗口
Feb 22 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
jquery得到font-size属性值实现代码
Sep 30 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 Javascript
使用vue2实现购物车和地址选配功能
Mar 29 Javascript
微信小程序的部署方法步骤
Sep 04 Javascript
Vue+Express实现登录状态权限验证的示例代码
May 05 Javascript
浅谈Express.js解析Post数据类型的正确姿势
May 30 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
Apr 22 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 Javascript
JS实现生成会变大变小的圆环实例
Aug 05 #Javascript
JavaScript计算某一天是星期几的方法
Aug 05 #Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 #Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 #Javascript
JS+CSS实现表格高亮的方法
Aug 05 #Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 #Javascript
JavaScript节点及列表操作实例小结
Aug 05 #Javascript
You might like
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
python调用webservice接口的实现
2019/07/12 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
机关道德讲堂实施方案
2014/03/15 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
软件项目开发计划书
2014/05/01 职场文书
敬老院标语
2014/06/27 职场文书
工程部主管岗位职责
2015/02/12 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL