获取用户定义的振动持续时间

Get user-defined vibration duration

我们可以像这样在支持的设备上触发振动:

navigator.vibrate(50);

但是 API 是否支持对用户默认值的任何访问?换句话说,是否可以从OS中获取振动持续时间?因此,当用户在使用设备时通常会按下按钮时,获取振动持续时间(如果有)?

不幸的是,没有,至少不是目前的状态(W3C 编辑草案 2019 年 6 月 27 日)

您可以通读整个规范here;很短。

不幸的是,如您所见,只定义了一个方法,vibrate,所以这个 API 当然 不会让您获得用户设置的默认值.

进一步阅读讨论模式的 validate and normalize 部分,看起来 你甚至不能 触发 用户定义的长度模式,你必须明确你的时间安排。

以后的草案(或单独的 "User preferences API")可能会添加您需要的功能,但我个人对此表示怀疑(由于评论中提到的原因)。

目前无法直接或间接实现。

the specification,

Vibration API is not a source of data on its own and as such is not producing any data possible to consume on the Web.

因此无法直接通过振动API获取数据

但是,该部分还指出

[I]t is known that it can serve as a source of events for other APIs. In particular, it is known that certain sensors such as accelerometers or gyroscopes are prone to tiny imperfections during their manufacturing. As such, they provide a fingerprinting surface that can be exploited utilizing the vibration stimuli generated via the Vibration API.

所以理论上,是的,您 可以 通过使用加速器 and/or 陀螺仪并适当地转换数据来获得实际持续时间。

但是,还有另一个警告:根据 the WebIDL,必须提供 VibratePattern(定义为 number | number[] 作为参数。因此,您无法使用默认值调用振动。

出于隐私考虑,我个人怀疑这会在未来版本的规范中转换为可选参数(这非常允许指纹识别)。

但请记住,并非所有平台都支持振动,并且会在调用时 return false。拒绝操作也是完全有效的(这也会 return false