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