Обработайте Ontouchdown на мобильном браузере и Onmousedown на рабочем столе/ноутбуке?

StackOverflow https://stackoverflow.com/questions/8800058

Вопрос

Я разрабатываю приложение для веб -игры с холстом HTML5, который должен реагировать на события «щелкать» (в общем смысле).

На мобильной платформе (или с сенсорной) это означает реагирование на OnTouchdown, на платформе настольного компьютера/ноутбука (с мышью или накладкой), что означает реагирование на OnmouseDown.

Проблема в том, что если я обращаюсь с обоими событиями, то иногда один и тот же «щелчок» приведет к тому, что оба события будут запущены, поэтому я получаю двойную сигнализацию.

Как бы лучше справиться с этим?

В настоящее время, после первого события Touch, я получаю, я выключаю события мыши, но это может быть немного тяжело, если платформа поддерживает как Counk, так и на клики мыши (Fi Android планшет с прикрепленной клавиатурой/прокладкой/мышью)

Измерение задержки между Touch & Click, чтобы проигнорировать щелчок после прикосновения, не работает слишком хорошо, так как существуют обстоятельства, когда пользователь может прикоснуться/щелкнуть на высокой частоте, поэтому слишком длинная задержка приводит к падению двойных нажатий/щелчков, и Слишком короткая задержка пропускает случайную двойную сигнализацию, проскальзывая.

Я посмотрел на обнаружение пользователя-агента, но это кажется довольно хрупким (многие пользовательские агенты там) и не решают случаи, когда на платформе есть как Touch, так и Mouse/Pad.

Это было полезно?

Решение

Может быть, комбинация вашего предложения:

Измерение задержки между Touch & Click, чтобы проигнорировать щелчок после прикосновения, не работает слишком хорошо, так как существуют обстоятельства, когда пользователь может прикоснуться/щелкнуть на высокой частоте, поэтому слишком длинная задержка приводит к падению двойных нажатий/щелчков, и Слишком короткая задержка пропускает случайную двойную сигнализацию, проскальзывая через

И обнаружение x, y координаты крана уменьшит ложные срабатывания. Так что, если оба события (Tap & Click), происходящие по последовательности, получили те же координаты, которые они обрабатываются как одинаковые.

Или, может быть, позвольте пользователю переключаться (через какой -то экран параметров), если он хочет использовать мышь или прикоснуться к своему устройству, если оба поддерживаются. Показать предупреждающее сообщение, например, говоря you're on a touch device so we enabled touch events, if you're using a mouse please see options или что-то вроде того.

Большинство пользователей будут довольны автоматическим ходом, и все несчастные могут изменить его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top