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

瀏覽器相容性