InputDeviceCapabilities API
InputDeviceCapabilities API 提供了有关底层输入事件来源的详细信息。该 API 试图描述设备的行为方式,而不是设备本身。例如,该 API 的第一个版本表明设备是否触发触摸事件,而不是它是否是触摸屏。
输入设备功能的概念和用法
由于 DOM 事件抽象了设备输入,因此它们无法了解是什么设备或哪种类型的设备触发了事件。这可能导致同一个操作触发多个事件处理程序的情况。为了解决这个问题,开发人员会做出假设并使用启发式方法来规范化网页上的行为。
InputDeviceCapabilities API 通过抽象输入设备的功能来解决此问题。例如,假设我们有一个网页同时实现了 touchstart 和 mousedown 事件。我们可以假设,如果触发了 touchstart 事件,则用户的设备具有触摸界面。当触发 mousedown 事件时会怎样?如果也能知道 touchstart 事件也被触发了,那就很有用了,这样我们就不会执行两次相同的操作。我们可以通过检查 UIEvent 的 sourceCapabilities 属性来做到这一点。
js
myButton.addEventListener("mousedown", (e) => {
// Touch event case handled above, don't change the style again on tap.
if (!e.sourceCapabilities.firesTouchEvents) myButton.classList.add("pressed");
});
接口
InputDeviceCapabilities实验性-
提供有关输入设备的逻辑信息。
其他接口的扩展
UIEvent.sourceCapabilities实验性 只读-
返回
InputDeviceCapabilities接口的实例,该接口提供有关负责生成触摸事件的物理设备的信息。
规范
| 规范 |
|---|
| Input Device Capabilities # dom-inputdevicecapabilities |
浏览器兼容性
加载中…