Я разрабатываю приложение для веб-игр с HTML5-холстом, который должен реагировать на события «щелчка» (в общем смысле).
На мобильной платформе (или сенсорной) это означает реакцию на onTouchDown, на платформе настольного компьютера / ноутбука (с помощью мыши или планшета), что означает реакцию на onMouseDown.
Проблема в том, что если я обработаю оба события, то иногда один и тот же «щелчок» приводит к тому, что оба события запускаются, поэтому я получаю двойную сигнализацию.
Какой лучший способ справиться с этим?
В настоящее время при первом полученном событии касания я отключаю события мыши, но это может быть немного сложным, если платформа поддерживает как касание, так и щелчки мышью (например, планшет Android с подключенной клавиатурой / клавиатурой / мышью)
Измерение задержки между касанием и щелчком, чтобы игнорировать щелчок после касания, работает не слишком хорошо, поскольку существуют обстоятельства, когда пользователь может касаться / щелкать с высокой частотой, поэтому слишком большая задержка приводит к отбрасыванию двойных нажатий / щелчки, и слишком короткая задержка пропускает случайные двойные сигналы проскальзывания.
Я смотрел на обнаружение пользовательского агента, но это кажется довольно хрупким (многие пользовательские агенты там) и не решает случаи, когда у платформы есть и сенсорная панель, и мышь / клавиатура.