如何在移动端实现触觉反馈——Vibration API(振动 API)
答案是 Vibration API。
触觉这件小事
视觉反馈早已司空见惯,但触觉反馈依旧能带来“嗯,有被回应到”的真实感。视觉不是唯一通道,振动能把交互拉回到手心。
Vibration API 允许网页调用设备的振动硬件,为用户提供简单而直接的物理反馈。
如何调用
Vibration API 通过 window.navigator.vibrate(pattern) 调用,参数既可以是一个非 0 的 Number(振动毫秒数),也可以是一组 Number 数组(脉冲序列)。
单次振动可以这样写:
// window.navigator.vibrate(number | [number])
window.navigator.vibrate(200)
window.navigator.vibrate([200])数组长度超过 1 的时候表示一组脉冲:奇数位是振动时长,偶数位是暂停时长。由于一次周期结束后会自动停止,一般数组长度为奇数:
// window.navigator.vibrate(number[])
// 模拟一下 SOS 的摩斯代码
window.navigator.vibrate([100, 30, 100, 30, 100, 30, 300, 30, 300, 30, 300, 30, 100, 30, 100, 30, 100])感受一下:click me to enjoy
当参数为 0、空数组、或数组内容全为 0 时,振动会被取消:
// window.navigator.vibrate(number | [])
window.navigator.vibrate(0)
window.navigator.vibrate([])
window.navigator.vibrate([0, 0, 0])兼容与节制
Vibration API 是比较新的特性,并非所有平台都支持。它也有一些限制,例如 iframe 内不可用、最大振动时长各平台不同等。实际使用前建议进行能力判断,同时谨慎使用,避免打扰用户。
目前兼容情况参照 caniuse。