Предотвращение событий эмуляции мыши (т.е. щелчок) от сенсорных событий в Мобильном Safari / iPhone с помощью JavaScript

В выполнении единственного приложения страницы 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 событие.

40
задан Brian Tompsett - 汤莱恩 22 August 2019 в 16:59
поделиться