许多由浏览器厂商提供给咱们新的API接口,是专门针对移动用户。这些简单的API之一振动的API。振动的API容许开发者直接调用设备震动,使用JavaScript,在给定时间的振动模式。git
浏览器对振动API的支持状况,一个好的习惯就是在使用以前要检查一下当前你的应用环境、浏览器是否支持振动API。下面就是检测的方法:github
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
方法的调用并不会引发手机循环振动;当参数是一个数字时,振动以后发生一次,而后就中止下来。当参数是数组时,震动会按数组里的值震动,而后就中止振动。svg
咱们能够简单的使用setInterval
和 clearInterval
方法产生让手机持续震动的效果:函数
var vibrateInterval;
// 开始震动
function startVibrate(duration) {
navigator.vibrate(duration);
}
// 中止震动
function stopVibrate() {
// 清除间隔和中止持续振动
if(vibrateInterval) clearInterval(vibrateInterval);
navigator.vibrate(0);
}
//在给定的持续时间和间隔时开始持续的振动
//假定一个数字值
function startPeristentVibrate(duration, interval) {
vibrateInterval = setInterval(function() {
startVibrate(duration);
}, interval);
}复制代码
上面的这段代码只是针对振动参数是一个数字的状况,若是参数是数组,你还须要计算一下它的总共持续时间,而后根据它的特征来进行循环。spa