Zrozumienie zdarzeń dotykowych

Staram się, aby niektóre z moich bibliotek działały z urządzeniami dotykowymi, ale trudno mi się dowiedzieć, w jaki sposób są obsługiwane i jak działają.

Zasadniczo są5 wydarzeń dotykowych, ale wydaje się, że wśród przeglądarek mobilnych istnieje zgoda tylko natouchstart wydarzenie (duh). Stworzyłemskrzypce jako przypadek testowy.

Przetestowałem to na mojej Galaxy Note z Androidem 4 na pokładzie, ale możesz również sprawdzić łącze za pomocą przeglądarki na komputerze.

Celem jest próba określenia sposobu obsługi kranów, podwójnych kranów i długich kranów. Nic fajnego.

Zasadniczo tak się dzieje:

ThePrzeglądarka zapasów na Androida nie uruchamia zdarzeń dotykowych. Po prostu próbuje emulować kliknięcia myszką z kranami, strzelającmousedown, mouseup iclick zdarzenia kolejno, ale podwójne stuknięcia po prostu przybliżają i oddalają stronę.

Chrom dla Androida uruchamia zdarzenie touchstart, gdy palec dotyka ekranu. Jeśli zostanie wkrótce wypuszczony, wtedy strzelamousedown, mouseup, touchend i w końcuclick wydarzenia.

W przypadkudługi kran, po około pół sekundy strzelamousedown imouseup, itouchend kiedy palec jest podniesiony, bezclick wydarzenie na końcu.

Jeśli typrzesuń palec, wystrzeliwujetouchmove zdarzenie kilka razy, a następnie wystrzeliwujetouchcancel zdarzenie, a potem nic się nie dzieje, nawet atouchend zdarzenie podczas podnoszenia palca.

A podwójne wciśnięcie uruchamia funkcje powiększania / pomniejszania, ale pod względem zdarzeń uruchamia kombinacjętouchstart-touchevent dwa razy, bez wyzwalanych zdarzeń myszy.

Firefox dla Androida poprawnie odpalatouchstart zdarzenie, aw przypadku krótkich pożarówmousedown, mouseup, touchend iclick potem.

W przypadkudługi kran, strzelamousedown, mouseup i w końcutouchend wydarzenia. To samo dotyczy Chrome dla tych rzeczy.

Ale jeśli typrzesuń palec, jeśli pożarytouchmove ciągle (jak można się spodziewać), ale tak nie jestnie strzelaćtouchleave zdarzenie, gdy palec opuszcza element ze słuchaczem zdarzenia i nie odpalatouchcancel zdarzenie, gdy palec wychodzi z okienka przeglądarki.

Dlapodwójne stuknięcia, zachowuje się tak jak Chrome.

Opera Mobile robi to samo z Chrome i Firefoxem przez krótki czas, ale w przypadku długiego naciśnięcia aktywuje jakąś funkcję udostępniania, którą naprawdę chcę wyłączyć. Jeśli poruszysz palcem lub stukniesz dwukrotnie, zachowuje się tak jak Firefox.

Chrome beta robi to zwykle przy krótkich dotknięciach, ale w przypadku długich uderzeń nie odpalamouseup wydarzenie już po prostutouchstart, następniemousedown po pół sekundytouchend kiedy palec zostanie podniesiony. Gdy palec zostanie przeniesiony, teraz zachowuje się jak Firefox i Opera Mobile.

W przypadkupodwójne stuknięcia, nie wystrzeliwuje zdarzeń dotykowychpodczas oddalania, ale tylko podczas powiększania.

Beta Chrome pokazuje dziwne zachowanie, ale nie mogę narzekać, ponieważ jest to wersja beta.

Pytanie brzmi: czy istnieje prosty i skuteczny sposób wykrywania krótkich stuknięć, długich stuknięć i podwójnych stuknięć w najpopularniejszych przeglądarkach urządzeń dotykowych?

Szkoda, że ​​nie mogę go przetestować na urządzeniach z systemem iOS za pomocą Safari lub IE dla Windows Phone 7 / Phone 8 / RT, ale jeśli niektórzy z was mogą, twoja opinia będzie bardzo mile widziana.

questionAnswers(4)

yourAnswerToTheQuestion