输入设备功能 API
输入设备功能 API 提供有关输入事件基础来源的详细信息。该 API 试图描述设备的行为方式,而不是它是什么。例如,API 的第一个版本指示设备是否触发触摸事件,而不是它是否是触摸屏。
输入设备功能的概念和用法
由于 DOM 事件对设备输入进行了抽象,因此它们无法提供有关触发事件的设备或设备类型的任何信息。这会导致在某些情况下,相同的操作会触发多个事件处理程序。为了解决这个问题,开发人员会做出假设并使用启发式方法来规范网页上的行为。
输入设备功能 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
接口的一个实例,该接口提供有关生成触摸事件的物理设备的信息。
规范
规范 |
---|
输入设备功能 # dom-inputdevicecapabilities |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。