Touch API (например, touchstart) не работает в MS Edge

мое приложение использует Touch API для обнаружения событий касания в JavaScript. Пример:

$(".element").on("touchstart", function(event){
    alert("TRUE");
});

Это работает на любом сенсорном устройстве с любым браузером, таким как Android или iOS, однако он не работает в MS Edge на планшете Windows 10 с клавиатурой или без нее. API, как представляется, поддерживается: Список совместимости. Тем не менее, я протестировал: 'ontouchstart' in window, и это возвращает false на этом устройстве. Более того, mousedown, похоже, срабатывает.

Что здесь происходит? Что можно сделать, чтобы запустить события касания на планшете Windows 10? Я хотел бы сохранить событие только для сенсорных устройств. Переход на API-интерфейс указателя будет включать также настольные устройства, и это не то, что я хочу.

Ответы

Ответ 1

для touch API, вы должны активировать флаг на Edge: в адресной строке введите about: flags и нажмите enter. В разделе Touch вы можете включить события касания с соответствующим выпадающим меню

Ответ 2

Вы включили пользовательскую обработку касания? Вы можете сделать это с помощью следующего фрагмента css (на теге body или просто на контейнере для geastures):

-ms-touch-action: none;

Далее, touch API - это функция webkit (возможно, в CanIuse есть ошибка). IE и Edge имеют аналогичную функцию, известную как API-интерфейс указателя. Но вы можете использовать библиотеку polyfill следующим образом: https://github.com/CamHenlin/TouchPolyfill

Ответ 3

Попробуйте использовать событие pointerdown. Некоторая (большая) информация . Как вы можете видеть, touchstart запускается Edge, но не во всех конфигурациях, когда клавиатура подключена/спарена, например, touchstart.

Ответ 4

Как я знаю, не должно быть никаких проблем с событиями касания в краю.

Попробуйте использовать собственный метод addEventListener, чтобы добавить прослушиватель событий "touchstart". Возможно, jQuery вызывает проблему.