Понимание сенсорных событий

Я пытаюсь заставить некоторые из моих библиотек работать с сенсорными устройствами, но мне трудно понять, как они поддерживаются и как они работают.

В основном, есть5 сенсорных событийПохоже, что среди мобильных браузеров консенсус есть только вtouchstart событие (дух). Я создалиграть на скрипке в качестве теста.

Я проверил это на своем Galaxy Note с Android 4 на борту, но вы также можете проверить ссылку с помощью браузера на рабочем столе.

Цель состоит в том, чтобы попытаться понять, как обрабатывать краны, двойные и длинные тапы. Ничего фантастического.

По сути, это то, что происходит:

Android-браузер не запускает сенсорные события. Он просто пытается эмулировать щелчки мышью с помощью нажатийmousedown, mouseup а такжеclick события последовательно, но двойные касания просто увеличивают и уменьшают масштаб страницы.

Хром для Android запускает событие touchstart, когда палец касается экрана. Если он будет выпущен достаточно скоро, он будет запущенmousedown, mouseup, touchend и наконецclick Мероприятия.

В случаедолгое нажатиепримерно через пол секунды он срабатываетmousedown а такжеmouseup, а такжеtouchend когда палец поднят, безclick событие в конце.

если тыпошевелить пальцем, он стреляетtouchmove событие пару раз, то оно срабатываетtouchcancel событие, и ничего не происходит потом, дажеtouchend событие при поднятии пальца.

A двойное нажатие запускает функции увеличения / уменьшения, но по событию запускает комбоtouchstart-touchevent дважды, без событий мыши.

Fire Fox для Android правильно срабатываетtouchstart событие, и в случае коротких пожаровmousedown, mouseup, touchend а такжеclick после этого.

В случаедолгое нажатие, это стреляетmousedown, mouseup и наконецtouchend Мероприятия. Это то же самое, что Chrome для этих вещей.

Но если тыпошевелить пальцем, если пожарыtouchmove непрерывно (как и следовало ожидать), но это нене уволитьtouchleave событие, когда палец покидает элемент с прослушивателем событий, и не запускаетtouchcancel событие, когда палец выходит из окна просмотра браузера.

Задвойное нажатие, он ведет себя так же, как Chrome.

Opera Mobile делает то же самое в Chrome и Firefox для короткого нажатия, но в случае длительного нажатия активирует какую-то функцию обмена, которую я действительно хочу отключить. Если вы двигаете пальцем или двойным нажатием, он ведет себя так же, как Firefox.

Бета-версия Chrome делает обычные для коротких нажатий, но в случае длинных нажатий не срабатываетmouseup событие больше, простоtouchstart, тогдаmousedown через полсекунды, затемtouchend когда палец поднят. Когда палец двигается, теперь он ведет себя как Firefox и Opera Mobile.

В случаедвойное нажатиене запускает сенсорные событияпри уменьшении, но только при увеличении.

Chrome бета показывает странное поведение, но я не могу пожаловаться, так как это бета.

Вопрос в том: есть ли простой и способ попытаться обнаружить короткие касания, длинные касания и двойные касания в наиболее распространенных браузерах сенсорных устройств?

Жаль, что я не могу проверить это на устройствах iOS с Safari или IE для Windows Phone 7 / Phone 8 / RT, но если некоторые из вас могут, ваши отзывы будут очень благодарны.

Ответы на вопрос(4)

Ваш ответ на вопрос