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

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

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

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

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

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

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

Хром для Android запускает событие touchstart, когда палец касается экрана. Если оно'S выпущен достаточно скоро, он стреляет потом,mousedownmouseuptouchend и наконецclick События.

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

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

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

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

В случаедлинный кран, это стреляет,mousedownmouseup и наконецtouchend События. Это'То же самое в Chrome для этих вещей.

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

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

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

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

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

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

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

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

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

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