Próbuję sprawić, by niektóre z moich bibliotek współpracowały z urządzeniami dotykowymi, ale ciężko mi jest dowiedzieć się, w jaki sposób są obsługiwane i jak działają.
Zasadniczo jest 5 zdarzeń dotykowych , ale wydaje się, że istnieje konsensus między przeglądarkami mobilnymi tylko w sprawie touchstart
wydarzenia (tak). Stworzyłem skrzypce jako przypadek testowy.
Przetestowałem to na moim Galaxy Note z Androidem 4 na pokładzie, ale możesz też sprawdzić link w przeglądarce na komputerze.
Celem jest próba zrozumienia, jak radzić sobie z dotknięciem, podwójnym i długim dotknięciem. Nic fajnego.
Zasadniczo dzieje się tak:
Przeglądarka giełdowa Androida nie uruchamia zdarzeń dotykowych. To właśnie próbuje naśladować kliknięć myszką z kranów, wypalanie mousedown
, mouseup
i click
wydarzeń kolejno, ale podwójne zawory tylko powiększać i pomniejszać tha strony.
Chrome na Androida uruchamia zdarzenie startu dotykowego, gdy palec dotyka ekranu. Jeśli jest wydany na tyle wcześnie, pożary następnie mousedown
, mouseup
, touchend
a na koniec click
imprezy.
W przypadku długiego kranu , po około pół sekundy pożary mousedown
i mouseup
, a touchend
gdy palec zostanie zniesione, bez click
wypadku na końcu.
Jeśli poruszysz palcem , touchmove
kilka razy wyzwala touchcancel
zdarzenie, po czym wyzwala zdarzenie, a potem nic się nie dzieje, nawet touchend
zdarzenie po podniesieniu palca.
A double tap wyzwala zoom in / out funkcji, ale wydarzenie mądry pożary kombi touchstart
- touchevent
dwa razy, bez żadnych zdarzeń myszy zwolniony.
Firefox dla Androida prawidłowo pożary touchstart
zdarzenia, aw przypadku krótkich pożarów kranu mousedown
, mouseup
, touchend
a click
potem.
W przypadku długiego kranu odpala mousedown
, mouseup
a na końcu touchend
zdarzenia. Tak samo jest z Chrome w przypadku tych rzeczy.
Ale jeśli poruszasz palcem , jeśli jest uruchamiany w sposób touchmove
ciągły (jak można się spodziewać), ale nie uruchamia touchleave
zdarzenia, gdy palec opuszcza element z detektorem zdarzeń, i nie uruchamia touchcancel
zdarzenia, gdy palec wyjdzie z widoku przeglądarki .
W przypadku dwukrotnego dotknięcia zachowuje się tak jak Chrome.
Opera Mobile robi to samo co Chrome i Firefox po krótkim dotknięciu, ale w przypadku długiego naciśnięcia aktywuje jakąś funkcję udostępniania, którą naprawdę chcę wyłączyć. Jeśli poruszysz palcem lub dwukrotnie dotknij, zachowuje się tak jak Firefox.
Chrome beta ma zwykle na krótkie krany, ale w przypadku długich kranów nie ognia mouseup
zdarzenie już, po prostu touchstart
, po czym mousedown
po pół sekundy, a touchend
gdy palec zostanie zniesione. Kiedy palec zostanie przesunięty, zachowuje się jak Firefox i Opera Mobile.
W przypadku podwójnego dotknięcia nie uruchamia zdarzeń dotykowych podczas pomniejszania , ale tylko podczas powiększania.
Chrome beta wykazuje najdziwniejsze zachowanie, ale nie mogę narzekać, ponieważ jest to wersja beta.
Pytanie brzmi : czy istnieje prosty i sposób na wykrycie krótkich, długich i podwójnych dotknięć w najpopularniejszych przeglądarkach urządzeń dotykowych?
Szkoda, że nie mogę go przetestować na urządzeniach iOS z Safari lub IE dla Windows Phone 7 / Phone 8 / RT, ale jeśli niektórzy z was mogą, Wasza opinia byłaby bardzo wdzięczna.