Ich versuche, einige meiner Bibliotheken mit Touch-Geräten zum Laufen zu bringen, aber es fällt mir schwer, herauszufinden, wie sie unterstützt werden und wie sie funktionieren.
Grundsätzlich gibt es 5 Touch-Ereignisse , aber es scheint, dass es unter mobilen Browsern nur einen Konsens über das touchstart
Ereignis gibt (duh). Ich habe eine Geige als Testfall erstellt.
Ich habe dies auf meinem Galaxy Note mit Android 4 an Bord getestet, aber Sie können den Link auch mit einem Desktop-Browser überprüfen.
Das Ziel ist es, herauszufinden, wie man mit Wasserhähnen, Doppelhähnen und langen Wasserhähnen umgeht. Nichts Besonderes.
Grundsätzlich passiert Folgendes:
Der Android-Aktienbrowser löst keine Touch-Ereignisse aus. Es wird versucht , nur Mausklicks mit Hähnen zu emulieren, Brennen mousedown
, mouseup
und click
Ereignissen hintereinander, aber doppelt Taps einzoomen nur in und out tha Seite.
Chrome für Android löst das Touchstart-Ereignis aus, wenn der Finger den Bildschirm berührt. Wenn es früh genug freigegeben ist, feuert es dann mousedown
, mouseup
, touchend
und schließlich click
Ereignisse.
Im Fall einer langen Hahn , nach etwa einer halben Sekunde es feuert , mousedown
und mouseup
, und , touchend
wenn der Finger angehoben wird, ohne click
Ereignis am Ende.
Wenn Sie Ihren Finger bewegen , wird ein touchmove
Ereignis ein paar Mal ausgelöst, dann wird ein touchcancel
Ereignis ausgelöst, und danach passiert nichts, nicht einmal ein touchend
Ereignis beim Anheben des Fingers.
Durch zweimaliges Tippen werden die Funktionen zum Vergrößern / Verkleinern ausgelöst , aber in Bezug auf das Ereignis wird die Kombination ausgelöst touchstart
- touchevent
zweimal, ohne dass Mausereignisse ausgelöst werden.
Firefox für Android feuert richtig die touchstart
Veranstaltung, und bei kurzem Hahn Feuer mousedown
, mouseup
, touchend
und click
danach.
Im Fall einer langen Hahn , feuert sie mousedown
, mouseup
und schließlich touchend
Ereignisse. Für diese Dinge ist es dasselbe wie für Chrome.
Wenn Sie jedoch Ihren Finger bewegen , wenn er touchmove
kontinuierlich ausgelöst wird (wie zu erwarten ist), das Ereignis jedoch nicht ausgelöst wird, touchleave
wenn der Finger das Element mit dem Ereignis-Listener verlässt, und das Ereignis nicht ausgelöst wird, touchcancel
wenn der Finger das Browser-Ansichtsfenster verlässt .
Bei Doppelklicks verhält es sich wie Chrome.
Opera Mobile macht das Gleiche wie Chrome und Firefox für ein kurzes Tippen, aktiviert jedoch bei langem Drücken eine Freigabefunktion, die ich wirklich deaktivieren möchte. Wenn Sie Ihren Finger bewegen oder zweimal tippen, verhält es sich wie Firefox.
Chrome Beta macht das Übliche für kurze Taps, aber bei langen Taps wird das mouseup
Ereignis nicht mehr ausgelöst, nur touchstart
dann, mousedown
nach einer halben Sekunde, dann, touchend
wenn der Finger angehoben wird. Wenn der Finger bewegt wird, verhält er sich jetzt wie Firefox und Opera Mobile.
Bei doppeltem Tippen werden beim Verkleinern keine Berührungsereignisse ausgelöst , sondern nur beim Vergrößern.
Chrome Beta zeigt das seltsamste Verhalten, aber ich kann mich nicht wirklich beschweren, da es sich um eine Beta handelt.
Die Frage ist : Gibt es eine einfache Möglichkeit, kurze, lange und doppelte Taps in den gängigsten Browsern von Touch-Geräten zu erkennen?
Schade, dass ich es nicht auf iOS-Geräten mit Safari oder IE für Windows Phone 7 / Phone 8 / RT testen kann, aber wenn einige von Ihnen dies können, wäre Ihr Feedback sehr dankbar.