Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
本节描述了本文档发布时的状态。当前的 W3C 发布文档和此技术报告的最新修订版本可以在 W3C 标准和草案索引中找到。
本规范已在基于 Chromium 的浏览器中实现。WebKit 已发布反对本 规范的立场。Firefox 已在 版本 129 中移除其实现。预计其当前形式不会推进到 W3C 推荐标准。
本文档代表了小组关于振动API的范围和特性的共识。需要注意的是,小组已经意识到有一些更高级的用例,目前的简单版本无法实现这些用例。计划在未来的修订中解决这些问题。
提供了与上一版本的变化历史记录。
本文档由设备与传感器工作组作为候选推荐草案发布,使用了 推荐轨道。
作为候选推荐发布并不意味着被 W3C 及其成员认可。候选推荐草案整合了 小组希望在后续的候选推荐快照中包含的上一版本候选推荐的更改。
这是一个草案文档,可能会随时被更新、替换或废弃。引用此文档时应仅将其视为正在进行中的工作。
本文档是由一个遵循 W3C 专利政策的工作组生产的。 W3C 维护着一个 公开专利披露列表,该页面还包括专利披露的说明。任何个人如果知晓某项专利,并认为该专利包含 必需的权利要求, 必须按照 W3C专利政策第6节的规定披露信息。
本文档受以下文件的管辖:2025年8月18日 W3C 过程文档。
本节为非规范性内容。
本 API 专为仅需简单触觉反馈的用例而设计。需要更细粒度控制的用例不在本规范范围内。本 API 不应作为通用通知机制使用。此类用例可通过 通知 API [NOTIFICATIONS] 规范处理。此外,是否启用振动的判断不属于本规范的范围。
除标记为非规范性内容的章节外,所有创作指南、图示、示例和注释均为非规范性内容。规范中的其他内容均为规范性内容。
本文档中的关键词 MAY、MUST 和 SHOULD 应按 BCP 14 [RFC2119] [RFC8174] 中的描述进行解释,并且只有当它们以大写字母形式出现时,如此处所示,才应进行此解释。
本规范定义的符合性标准适用于单一产品:实现本规范接口的用户代理。
使用 ECMAScript 实现本规范所定义 API 的实现,必须遵循 Web IDL 规范 [WEBIDL-1] 中定义的 ECMAScript 绑定方式, 因为本规范采用了该规范及术语。
WebIDLtypedef (unsigned long or sequence<unsigned long>) VibratePattern;
vibrate()
方法的步骤为运行 处理振动模式 算法。
振动模式 由
VibratePattern 对象表示。
处理振动模式的规则如下算法:
vibrate()
方法的第一个参数。
visible,则返回 false 并终止这些步骤。
校验与标准化 一个 振动模式,给定 pattern,运行以下步骤:
执行振动 使用 全局对象 global 和 振动模式 pattern,执行以下步骤:
当 用户代理确定
Document 所在 顶级浏览上下文的
visibility
state发生变化时,
MUST 中止正在运行的 处理振动模式算法(如有)。
振动 API 本身不是数据源,因此不会在 Web 上产生可被消费的数据。但已知它可为其他 API 提供事件源。尤其是,一些传感器如加速度计或陀螺仪在制造时可能存在微小缺陷,因此可利用通过振动 API 产生的刺激,形成可被利用的指纹识别面。就此而言,振动 API 联合其他机制间接带来隐私风险,这可能包括跨设备追踪和通信。此外,设备振动时可能被外部观察者察觉,从而实现物理身份识别,甚至可能追踪用户。
因此,用户代理MAY在 API 被使用时通知用户,并按来源或全局提供禁用 API(实际无操作)的机制。
用户代理 SHOULD 应对每单位时间(如每分钟或每小时)内的振动请求数量进行全局速率限制,以防止过度使用。
本节为非规范性内容。
下例中,设备将振动 1000 毫秒(ms):
// 振动 1000 毫秒
navigator.vibrate(1000);
// 或者
navigator.vibrate([1000]);
下例中,设备将振动 50 毫秒,静止 100 毫秒,再振动 150 毫秒:
navigator.vibrate([50, 100, 150]);
下例用于取消所有正在进行的振动:
// 取消所有正在振动
navigator.vibrate(0);
// 或者
navigator.vibrate([]);
感谢 Justin Lebar、Mounir Lamouri、Jonas Sicking 及 Mozilla WebAPI 团队的贡献,以及提供 WebVibrator 原型作为初始输入。感谢 Anne van Kesteren 对规范如何在其他环境复用提出建议,感谢 Lukasz Olejnik 对隐私问题的考虑。最后,感谢张志强提供简体中文翻译。
自 W3C 推荐标准 2016年10月18日 以来的变更:
其他未影响文件解释的变更:
WebIDLtypedef (unsigned long or sequence<unsigned long>) VibratePattern;
partial interface Navigator {
boolean vibrate (VibratePattern pattern);
};