Сенсорный 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 15

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.