Navigator.vibrate()

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! (en-US)
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 未实现 11.0 (11.0) moz (en-US)
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 (en-US)
(Yes) (unprefixed) [2][3]
(Yes) webkit (en-US)
(Yes) (unprefixed) [2][3]
11.0 (11.0) moz (en-US)
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

更多