
判断浏览器对振动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 levelfunction startVibrate(duration) {navigator.vibrate(duration);}// Stops vibrationfunction 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 givenfunction startPeristentVibrate(duration, interval) {vibrateInterval = setInterval(function() {startVibrate(duration);}, interval);}上面的这段代码只是针对振动参数是一个数字的情况,如果参数是数组,你还需要计算一下它的总共持续时间,然后根据它的特征来进行循环。