API возможностей устройств ввода
Экспериментально: Это экспериментальная технология
Перед использованием в продуктовой среде внимательно изучите таблицу совместимости браузеров.
API InputDeviceCapabilities предоставляет подробную информацию об основных источниках событий ввода. API пытается описать поведение устройства, а не то, что это за устройство. Например, первая версия API указывает, генерирует ли устройство события touch, а не является ли оно сенсорным экраном.
Концепции и использование возможностей устройств ввода
Так как события DOM абстрагируют ввод устройств, они не предоставляют способа узнать, какое устройство или тип устройства сгенерировало событие. Это может привести к случаям, когда одно и то же действие вызывает несколько обработчиков событий. Для решения этой проблемы разработчики делают предположения и используют эвристики для нормализации поведения на веб-страницах.
API InputDeviceCapabilities решает эту проблему, абстрагируя возможности устройств ввода. Например, предположим, что у нас есть веб-страница, которая реализует как событие touchstart , так и событие mousedown. Мы можем предположить, что если событие touchstart сгенерировано, то устройство пользователя имеет сенсорный интерфейс. А что происходит при генерации события mousedown? Было бы полезно узнать, было ли также сгенерировано событие touchstart, чтобы не выполнять одно и то же действие дважды. Это можно сделать, проверив свойство sourceCapabilities у объекта UIEvent.
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, который предоставляет информацию о физическом устройстве, ответственном за генерацию события touch.
Спецификации
Совместимость браузеров
| Десктоп | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
InputDeviceCapabilities |
47 | 79 | Нет | 34 | Нет | 47 | Нет | 34 | Нет | 5.0 | 47 |
InputDeviceCapabilities_API |
47 | 79 | Нет | 34 | Нет | 47 | Нет | 34 | Нет | 5.0 | 47 |
firesTouchEvents |
47 | 79 | Нет | 34 | Нет | 47 | Нет | 34 | Нет | 5.0 | 47 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/InputDeviceCapabilities_API