Я намагаюся змусити деякі свої бібліотеки працювати із сенсорними пристроями, але мені важко зрозуміти, як вони підтримуються та як вони працюють.
В основному, є 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, але якщо хтось із вас зможе, ваші відгуки будуть дуже вдячні.
