JavaScript振动API是浏览器原生接口,用于控制移动设备振动,需用户手势触发,支持数字或数组参数,兼容性需检测且受iOS/Android系统限制。

JavaScript 振动 API(Vibration API)是浏览器提供的一套用于控制移动设备振动马达的接口,主要在支持该功能的 Android 和部分 iOS 设备上可用。它不依赖第三方库,原生支持,但需用户主动触发(如点击事件中调用),且不能后台持续振动。
振动 API 的基本用法
核心方法是 navigator.vibrate(),它接受一个参数,可以是:
- 一个数字(毫秒数),例如 navigator.vibrate(200):振动 200 毫秒;
- 一个数字数组,例如 navigator.vibrate([100, 50, 200]):振动 100ms → 停顿 50ms → 振动 200ms;
- 传入 0、空数组 [] 或 false 会停止当前振动(部分浏览器支持)。
使用前必须检查兼容性与权限
并非所有浏览器或设备都支持振动,调用前应判断:
- 检查 API 是否存在:if ("vibrate" in navigator);
- iOS Safari 从 iOS 16.4 起才有限支持(仅限用户手势触发,且振动时长被系统限制,通常最大 500ms);
- Android Chrome / Firefox 支持较好,但需页面处于活跃标签页且有用户交互上下文(如 click、touchend)。
安全限制与常见问题
浏览器出于用户体验和功耗考虑,施加了严格限制:
立即学习“Java免费学习笔记(深入)”;
- 只能在用户手势(如按钮点击)回调中首次调用,不能在页面加载或定时器中自动触发;
- 连续多次调用可能被节流或忽略,尤其在 iOS 上;
- 振动时长超过系统允许上限(如 iOS 限制单次 ≤500ms)会被截断;
- PWA 安装后,在部分 Android 设备上可获得更稳定的振动支持。
简单实用示例
给一个按钮添加点击震动反馈:











