InputDeviceCapabilities API

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

InputDeviceCapabilities API 提供了有关底层输入事件来源的详细信息。该 API 试图描述设备的行为方式,而不是设备本身。例如,该 API 的第一个版本表明设备是否触发触摸事件,而不是它是否是触摸屏。

输入设备功能的概念和用法

由于 DOM 事件抽象了设备输入,因此它们无法了解是什么设备或哪种类型的设备触发了事件。这可能导致同一个操作触发多个事件处理程序的情况。为了解决这个问题,开发人员会做出假设并使用启发式方法来规范化网页上的行为。

InputDeviceCapabilities API 通过抽象输入设备的功能来解决此问题。例如,假设我们有一个网页同时实现了 touchstartmousedown 事件。我们可以假设,如果触发了 touchstart 事件,则用户的设备具有触摸界面。当触发 mousedown 事件时会怎样?如果也能知道 touchstart 事件也被触发了,那就很有用了,这样我们就不会执行两次相同的操作。我们可以通过检查 UIEventsourceCapabilities 属性来做到这一点。

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

浏览器兼容性