Понимание сенсорных событий
пытаюсь заставить некоторые из моих библиотек работать с сенсорными устройствами, но ямне трудно понять, как ониПоддерживается и как они работают.
В основном, есть5 сенсорных событий, но, кажется, тамКонсенсус среди мобильных браузеров только наtouchstart
событие (дух). Я'мы создалииграть на скрипке в качестве контрольного примера.
Я проверил это на моем Galaxy Note с Android 4 на борту, но вы также можете проверить ссылку с помощью браузера на рабочем столе.
Цель состоит в том, чтобы попытаться понять, как обрабатывать краны, двойные и длинные тапы. Ничего фантастического.
По сути, это то, что происходит:
Android-браузер Безразлично»Огонь сенсорных событий. Он просто пытается эмулировать щелчки мыши с нажатиями, выстрелами,mousedown
mouseup
а такжеclick
события последовательно, но двойные касания просто увеличивают и уменьшают масштаб страницы.
Хром для Android запускает событие touchstart, когда палец касается экрана. Если оно'S выпущен достаточно скоро, он стреляет потом,mousedown
mouseup
touchend
и наконецclick
События.
В случаедлинный кранпримерно через пол секунды он срабатываетmousedown
а такжеmouseup
, а такжеtouchend
когда палец поднят, безclick
событие в конце.
если тыпошевелить пальцем, он стреляетtouchmove
событие пару раз, то оно срабатываетtouchcancel
событие, и ничего не происходит потом, дажеtouchend
событие при поднятии пальца.
двойное нажатие запускает функции увеличения / уменьшения, но по событию запускает комбо -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 beta показывает странное поведение, но я могудействительно жалуюсь, так какбета.
Вопрос в том: есть ли простой и способ попытаться обнаружить короткие касания, длинные касания и двойные касания в наиболее распространенных браузерах сенсорных устройств?
Жаль, что не могуПротестируйте его на устройствах iOS с Safari или IE для Windows Phone 7 / Phone 8 / RT, но если кто-то из вас сможет, ваши отзывы будут очень благодарны.