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 相关文章推荐
input 和 textarea 输入框最大文字限制的jquery插件
Oct 27 Javascript
深入理解JavaScript 闭包究竟是什么
Apr 12 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
Dec 18 Javascript
Node.js文件操作方法汇总
Mar 22 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
解析Angular 2+ 样式绑定方式
Jan 15 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 Javascript
vue操作动画的记录animate.css实例代码
Apr 26 Javascript
js中关于Blob对象的介绍与使用
Nov 29 Javascript
Vue路由管理器Vue-router的使用方法详解
Feb 05 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
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
Email+URL的判断和自动转换函数
2006/10/09 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
Python3搜索及替换文件中文本的方法
2015/05/22 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python super的使用方法及实例详解
2019/09/25 Python
python  logging日志打印过程解析
2019/10/22 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
python如何调用百度识图api
2020/09/29 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
求职信格式范本
2013/11/15 职场文书
档案室主任岗位职责
2014/02/12 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
升国旗仪式主持词
2014/03/19 职场文书
学校2014年度工作总结
2014/12/06 职场文书
介绍信样本
2015/01/31 职场文书
警告通知
2015/04/25 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python
python 单机五子棋对战游戏
2022/04/28 Python