Сенсорный API (например, touchstart) не работает в MS Edge
Мое приложение использует сенсорный API для обнаружения сенсорных событий в JavaScript. Пример:
$(".element").on("touchstart", function(event){
alert("TRUE");
});
Это работает на любом сенсорном устройстве с любым браузером, таким как Android или iOS, однако он не работает в MS Edge на планшете Windows 10 с подключенной клавиатурой или без нее. API, кажется, поддерживается: список совместимости . Тем не менее, я проверил: 'ontouchstart' in window
, и это возвращает false на этом устройстве. Кроме того, mousedown
, кажется, увольняют.
Что здесь происходит? Что я могу сделать, чтобы выстрелить? сенсорные события на планшете Windows 10? Я хотел бы сохранить событие только для сенсорных устройств. Переключение на API событий указателя будет включать также настольные устройства, и это не то, что я хочу.
3 ответа:
Для touch API необходимо активировать флаг на Edge: в адресной строке введите about: flags и нажмите enter. В разделе сенсорные события вы можете включить сенсорные события с соответствующим выпадающим списком
Вы включили пользовательскую обработку прикосновений ? Вы можете сделать это со следующим фрагментом css (на теге body или просто контейнере для geastures):
-ms-touch-action: none;
Далее, touch API-это функция webkit (возможно, в CanIuse есть ошибка ?). IE и Edge имеют аналогичную функцию, известную как Pointer API. Но вы можете использовать библиотеку polyfill, как это : https://github.com/CamHenlin/TouchPolyfill
Попробуйте использовать событие
pointerdown
. Немного (намного) большеинформации . Как вы можете видеть,touchstart
запускается Edge, но не во всех конфигурациях, когда клавиатура подключена / сопряжена, например, нетtouchstart
.