本文介绍JavaScript中的Vibration API,用于在移动Web应用中实现手机震动功能。内容涵盖如何检测浏览器支持、调用单次或多次震动模式、停止震动以及利用定时器实现持续震动的具体代码示例,适用于游戏和多媒体应用的交互设计。
JavaScript Vibration API概述
现代浏览器提供的API越来越偏向移动应用而非传统桌面应用,例如JavaScript地理位置信息API。此外,还有一个专门针对手机应用的JavaScript API,即振动(Vibration) API。显然,该API允许移动开发人员通过JavaScript调用手机的振动功能,并可以设定振动的模式和持续时间。

检测浏览器支持
在使用前,良好的习惯是检查当前应用环境及浏览器是否支持振动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感觉如何?认为它会很快流行起来,还是没有多大用处?