Я намагаюся змусити деякі свої бібліотеки працювати із сенсорними пристроями, але мені важко зрозуміти, як вони підтримуються та як вони працюють.
В основному, є 5 сенсорних подій , але, здається, є єдиний консенсус серед мобільних браузерів лише щодо цієї touchstart
події (duh). Я створив скрипку як тест.
Я протестував це на своєму Galaxy Note з Android 4 на борту, але ви можете перевірити посилання і в браузері на робочому столі.
Мета полягає в тому, щоб спробувати з’ясувати, як обробляти крани, подвійні та довгі крани. Нічого химерного.
В основному відбувається ось що:
Фондовий браузер Android не спрацьовує подія дотику. Він просто намагається емулювати клацання миші з відводами, стрілянина mousedown
, mouseup
і click
події послідовно, але подвійні відводи тільки збільшувати і зменшувати масштаб тха сторінки.
Chrome для Android запускає подію сенсорного запуску, коли палець торкається екрана. Якщо вона вийде досить скоро, він стріляє , то 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 beta робить звичайне для коротких натискань, але у випадку довгих натискань він більше не запускає mouseup
подію, просто touchstart
, потім mousedown
через пів секундиtouchend
коли палець піднімається. Коли палець рухається, тепер він поводиться як Firefox та Opera Mobile.
У разі подвійних натискань він не спрацьовує подій дотику під час зменшення , а лише під час збільшення.
Бета-версія Chrome демонструє найдивнішу поведінку, але я не можу поскаржитися, оскільки це бета-версія.
Питання в тому : чи є простий і спосіб спробувати виявити короткі, довгі та подвійні крани в найпоширеніших браузерах сенсорних пристроїв?
Шкода, що я не можу протестувати його на пристроях iOS із Safari або IE для Windows Phone 7 / Phone 8 / RT, але якщо хтось із вас зможе, ваші відгуки будуть дуже вдячні.