输入设备功能 API

实验性:这是一种实验性技术
在生产环境中使用前,请仔细查看浏览器兼容性表

输入设备功能 API 提供有关输入事件基础来源的详细信息。该 API 试图描述设备的行为方式,而不是它是什么。例如,API 的第一个版本指示设备是否触发触摸事件,而不是它是否是触摸屏。

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

由于 DOM 事件对设备输入进行了抽象,因此它们无法提供有关触发事件的设备或设备类型的任何信息。这会导致在某些情况下,相同的操作会触发多个事件处理程序。为了解决这个问题,开发人员会做出假设并使用启发式方法来规范网页上的行为。

输入设备功能 API 通过抽象输入设备的功能解决了这个问题。例如,假设我们有一个实现了 touchstartmousedown 事件的网页。我们可以假设,如果触发了 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 接口的一个实例,该接口提供有关生成触摸事件的物理设备的信息。

规范

规范
输入设备功能
# dom-inputdevicecapabilities

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。