Я пытаюсь заставить некоторые из моих библиотек работать с сенсорными устройствами, но мне трудно найти способы, как они поддерживаются и как они работают.
В принципе, есть 5 событий касания, но, похоже, существует консенсус среди мобильных браузеров только в событии touchstart (duh). Я создал fiddle в качестве тестового примера.
Я тестировал это на своей галактической ноте с Android 4 на борту, но вы также можете проверить связь с обозревателем рабочего стола.
Цель состоит в том, чтобы попытаться выяснить, как обрабатывать краны, двойные краны и длинные отводы. Ничего необычного.
В принципе, это то, что происходит:
Активный браузер  Android не запускает события касания. Он просто пытается имитировать щелчки мыши с кранами, стреляя mousedown, mouseup и click события последовательно, но двойные краны просто увеличивают и уменьшают страницу.
  Chrome для Android запускает событие touchstart, когда палец касается экрана. Если он будет выпущен достаточно быстро, он запускает mousedown, mouseup, touchend и, наконец, события click.
В случае длительного касания примерно через полсекунды он срабатывает mousedown и mouseup, а touchend при поднятии пальца без события click в конце.
Если вы переместите свой палец, он несколько раз запускает событие touchmove, затем он запускает событие touchcancel, и после этого ничего не происходит, даже при событии touchend при поднятии пальца.
Двойной щелчок вызывает функции увеличения/уменьшения масштаба, но по событию он дважды комбинирует комбинацию touchstart - touchevent, при этом события мыши не запускаются.
  Firefox для 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, но если некоторые из вас могут, ваша обратная связь будет очень оценена.
