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 相关文章推荐
js移除事件 js绑定事件实例应用
Nov 28 Javascript
JS 跳转页面延迟2种方法
Mar 29 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 Javascript
聊一聊JS中的prototype
Sep 29 Javascript
JS实现向iframe中表单传值的方法
Mar 24 Javascript
Vue父子模版传值及组件传值的三种方法
Nov 27 Javascript
解决select2在bootstrap modal中不能正常使用的问题
Aug 09 Javascript
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
Apr 29 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 Javascript
JavaScript实现前端网页版倒计时
Mar 24 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
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
json 定义
2008/06/10 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
JS求平均值的小例子
2013/11/29 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
javascript计时器详解
2015/02/28 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
复习Python中的字符串知识点
2015/04/14 Python
Python import用法以及与from...import的区别
2015/05/28 Python
简单学习Python time模块
2016/04/29 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
简单介绍Object类的功能、常用方法
2013/10/02 面试题
高三地理教学反思
2014/01/11 职场文书
教师队伍管理制度
2014/01/14 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
班组长岗位职责
2014/03/03 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
先进工作者推荐材料
2014/12/23 职场文书
佛光寺导游词
2015/02/10 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python
mysql查看表结构的三种方法总结
2022/07/07 MySQL