Создавая одностраничное приложение Javascript с интерактивными элементами DOM, я обнаружил, что последовательность "mouseover-mousemove-mousedown-mouseup-click
" происходит в виде группы после последовательности событий "touchstart-touchmove-touchend
".
Я также обнаружил, что можно предотвратить события "mouse*-click
", выполнив "event.preventDefault()
" во время события touchstart
, но только тогда, а не во время touchmove
и touchend
. Это странный дизайн, потому что во время touchstart
невозможно узнать, намерен ли пользователь перетащить или провести пальцем, или просто коснуться / щелкнуть элемент.
Я закончил тем, что установил флаг ignore_next_click где-то, привязанный к отметке времени, но это, очевидно, не очень чисто.
Кто-нибудь знает лучший способ сделать это, или мы что-то упустили?
Обратите внимание, что хотя "щелчок" может быть распознан как последовательность "touchstart-touchend
" (т.е. без "touchmove
"), существуют определенные вещи, такие как фокус ввода с клавиатуры, которые могут произойти только во время правильного click
событие.