我们可以这样在支持振动的设备上触发振动:
navigator.vibrate(50);
但是该API是否支持访问用户默认设置?换句话说,是否有可能从操作系统中获取振动持续时间?因此,当用户在使用设备时通常会按下按钮时,可以获得该振动持续时间(如果有)吗?
navigator.vibrate(50);
但是该API是否支持访问用户默认设置?换句话说,是否有可能从操作系统中获取振动持续时间?因此,当用户在使用设备时通常会按下按钮时,可以获得该振动持续时间(如果有)吗?
目前直接或间接地无法实现此功能。
根据规范,
振动 API 本身不是数据源,因此在 Web 上无法产生任何可消费的数据。
因此,无法通过振动 API 直接获取 任何数据。
然而,该部分还指出
已知它可以作为其他 API 的事件源。特别是,已知某些传感器(如加速度计或陀螺仪)在制造过程中存在微小缺陷。因此,它们提供了一个指纹表面,可以利用通过振动 API 生成的振动刺激来利用。
因此理论上,您可以使用加速器和/或陀螺仪并适当转换数据来获取实际持续时间。
然而,还有一个注意事项:根据WebIDL,VibratePattern
(定义为number | number[]
)必须作为参数提供。因此,您不能使用默认值调用振动。
我个人怀疑这将在未来的规范版本中转换为可选参数,因为考虑到隐私问题(这非常容易被指纹识别)。
请记住,并非所有平台都支持振动,并且在调用时会返回false
。拒绝操作也是完全有效的(这也将返回false
)。