版权所有 © 2026 万维网联盟 (W3C)。W3C® 法律免责声明、商标及宽松文档许可规则适用。
本节描述了本文件发布时的状态。当前的 W3C 出版物列表和本技术报告的最新版本可以在 W3C 标准和草案索引中找到。
本规范已在基于 Chromium 的浏览器中实现。WebKit 已发布了反对本规范的立场。Firefox 在 129 版中移除了其实现。目前形式下不太可能晋升为 W3C 推荐标准。
本文档代表小组对振动 API 范围和特性的共识。需要指出的是,小组意识到存在更高级的用例,无法通过此更简化的首个版本实现。计划在未来的修订中予以解决。
提供了自前一版本以来的变更历史。
本文档由 设备与传感器工作组 作为候选推荐草案在 推荐轨道 下发布。
作为候选推荐标准发布并不意味着得到 W3C 及其成员的认可。候选推荐标准草案整合了来自先前候选推荐标准的更改,工作组打算将其包含在后续的候选推荐标准快照中。
这是一份草案文件,可能随时被其他文件更新、替换或废弃。将其作为进展中的工作以外的引用是不恰当的。
本文档由在 W3C 专利政策 之下运作的小组制作。W3C 维护一份公开的专利披露清单,列出与小组交付物相关的所有专利披露;该页面还包括披露专利的说明。若个人实际了解某专利且认为该专利包含基本权利要求,必须依据《W3C 专利政策》第 6 节进行披露。
本文件受 2025 年 8 月 18 日 W3C 流程文档约束。
本节是非规范性的。
本 API 专门用于仅需简单触觉反馈的使用场景。需要更细粒度控制的用例不在本规范范围之内。该 API 并非用于通用通知机制,此类需求应使用 Notifications API [NOTIFICATIONS] 规范。此外,确定振动是否已启用也不在本规范范围之内。
除了标记为非规范性的章节外,本规范中的所有创作指南、图表、示例和注释均为非规范性内容。本规范中的其他所有内容均为规范性内容。
本文档中的关键字 MAY、MUST 与 SHOULD 应按照 BCP 14 [RFC2119] [RFC8174] 的定义进行解释,仅当它们全部大写出现时(如本处所示)。
本规范定义了适用于单一产品的合规性标准:实现其中接口的用户代理。
使用 ECMAScript 实现本规范中 API 的实现必须遵循 Web IDL 规范中定义的 ECMAScript 绑定[WEBIDL-1],因为本规范采用了该规范及其术语。
WebIDLtypedef (unsigned long or sequence<unsigned long>) VibratePattern;
The vibrate() 方法的步骤是运行处理振动模式算法。振动模式由 VibratePattern 对象表示。
处理振动模式的规则如下面的算法所示。
vibrate() 方法的第一个参数。visible,则返回 false 并终止这些步骤。要对给定的 pattern 振动模式 进行验证并规范化,请运行以下步骤。
要使用 全局对象 global 与 振动模式 pattern 执行振动,请运行以下步骤。
当 用户代理 检测到顶层浏览上下文的 Document 的 可见性状态 发生改变时,MUST 中止已在运行的 处理振动模式算法(若存在)。
振动 API 本身并不产生可在网络上消费的数据,但它可以成为其他 API 事件的来源。特别是,某些传感器(如加速度计或陀螺仪)在制造过程中会出现细微缺陷,这为指纹识别提供了可利用的表面,攻击者可通过振动 API 产生的振动刺激进行利用。因此,振动 API 与其他机制结合时会产生间接的隐私风险,可能导致跨设备追踪和通信等意外隐私风险。此外,振动的设备可能被外部观察者看到,从而实现对用户的物理识别甚至追踪。
基于上述原因,用户代理 MAY 在 API 被使用时通知用户,并提供按来源或全局禁用该 API(等同于空操作)的机制。
用户代理 SHOULD 实施全局速率限制,以在一定时间内(例如每分钟或每小时)限制振动请求的次数,防止过度使用。
本节是非规范性的。
在下面的示例中,设备将振动 1000 毫秒(ms)。
// vibrate for 1000 ms
navigator.vibrate(1000);
// or alternatively
navigator.vibrate([1000]);
在下面的示例中,模式将导致设备振动 50 ms、静止 100 ms,然后再振动 150 ms。
navigator.vibrate([50, 100, 150]);
下面的示例会取消所有已有的振动。
// cancel any existing vibrations
navigator.vibrate(0);
// or alternatively
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);
};