Navigator.vibrate() 方法使设备(有震动硬件)产生有频率的震动。若设备不支持震动,该方法将无效。若某震动方式已经在进行中(当该方法调用时),则前一个震动方式停止,新的取而代之。

该方法若因为提供无效的参数使得无法使设备震动,它将返回false,否则返回true。若振动方案导致长时间的震动,它会被截断:最大震动时长取决于每个浏览器的具体实现。

语法

var successBool = window.navigator.vibrate(pattern);
pattern
提供一个震动、暂停间隔的模式。每一个值表示交替震动或者暂停的毫秒数。你可以提供一个单个的值(震动一次的毫秒数)或者一个包含整数的数组来交替的震动、暂停、震动。详情参见 Vibration API

传递一个 0、一个空数组或者一个元素全部为 0 的数组会结束当前正在运行中的震动模式。

示例

window.navigator.vibrate(200); // vibrate for 200ms
window.navigator.vibrate([100,30,100,30,100,200,200,30,200,30,200,200,100,30,100,30,100]); // Vibrate 'SOS' in Morse.

规范

Specification Status Comment
Vibration API Recommendation Linked to spec is the latest editor's draft; W3C version is a REC.

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 未实现 11.0 (11.0) moz
16.0 (16.0) (no prefix) [1]
未实现 未实现 未实现
Feature Android Webview Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) webkit
(Yes) (unprefixed) [2][3]
(Yes) webkit
(Yes) (unprefixed) [2][3]
11.0 (11.0) moz
16.0 (16.0) (no prefix) [1]
未实现 (Yes)[3] 未实现

[1] 当震动模式太长或者其中一次震动的时长太长时,截至 Firefox 26,Gecko 将会抛出一个异常,而不是返回 false (bug 884935)。从 Firefox 32 开始,Gecko 返回 true,但是会将该模式截断 (bug 1014581)。

[2] 从 Chrome 55 开始,跨域的 iframe 中不支持该 API。

[3] 从 Chrome 60/Opera 47 开始,该方法需要一个用户手势。否则会返回 false

更多

文档标签和贡献者

此页面的贡献者: Tao-Quixote, nDos
最后编辑者: Tao-Quixote,