javascript 中震动功能由 navigator 接口的 vibrate() 方法提供,需在安全上下文、用户手势触发且设备支持振动硬件时调用,参数支持毫秒数或时长/暂停数组,不支持时应检测并降级处理。

JavaScript 中 BOM 本身不提供震动 API,真正可用的是 Navigator API 中的 vibrate() 方法,它属于 Web API 标准,需通过 navigator.vibrate() 调用,且仅在支持振动硬件的设备(如手机、平板)上生效。
震动 API 的基本调用方式
震动功能依赖于 navigator.vibrate,它不是 BOM 的一部分,而是 Navigator 接口的扩展方法。使用前需确认环境支持:
- 必须运行在安全上下文(
https://或localhost) - 用户已与页面交互过(如点击、触摸),否则多数浏览器会静默拒绝(尤其 Chrome 从 91+ 开始强制要求用户手势触发)
- 设备需具备振动硬件并启用系统振动权限(例如 Android 上需开启“触感反馈”)
如何正确触发震动
调用方式简单,但参数逻辑需注意:
-
navigator.vibrate(200):震动 200 毫秒 -
navigator.vibrate([100, 50, 150]):震动 100ms → 停 50ms → 震动 150ms(奇数索引为震动时长,偶数为暂停时长) -
navigator.vibrate(0)或navigator.vibrate([]):清空当前震动队列,等效于停止震动 - 重复调用会覆盖前一次未完成的震动序列
增强交互的实用建议
震动是辅助反馈手段,应谨慎使用,避免干扰或误触发:
- 仅用于明确用户操作结果,如按钮点击成功、表单提交验证通过、游戏得分提示
- 避免在滚动、悬停或自动轮播中触发(无用户主动行为 + 无明确语义)
- 提供设置开关,尊重用户偏好(部分用户可能关闭触觉反馈或有感官敏感需求)
- 搭配视觉/听觉反馈使用,比如按钮按压态 + 短震 + 微弱音效,形成多模态确认
兼容性与降级处理
并非所有浏览器或平台都支持 vibrate():
- Chrome、Edge、Firefox(Android)支持良好;Safari 完全不支持(iOS/iPadOS 无公开震动 API)
- 调用前务必检测:
if ('vibrate' in navigator) { ... } - 不支持时可降级为 CSS 动画(如轻微缩放抖动)、声音提示或 Toast 文字反馈
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











