Ich habe schon seit einiger Zeit Berührungsereignisse verwendet, aber ich bin gerade auf ein Problem gestoßen. Bisher habe ich überprüft, ob Touch-Funktionen unterstützt werden, und darauf basierende selektive Ereignisse angewendet. Gefällt mir:Erkennung von Browserfunktionen und selektiven Ereignissen für Maus und Touch
if(document.ontouchmove === undefined){
//apply mouse events
}else{
//apply touch events
}
Meine Skripts funktionieren jedoch nicht mehr in Chrome5 (derzeit Betaversion) auf meinem Computer. Ich recherchierte es ein wenig, und wie ich es erwartet hatte, ist in Chrome5 (im Gegensatz zu älteren Chrome, Firefox, IE usw.) document.ontouchmove
nicht mehr undefined
sondern null
.
Zuerst wollte ich einen Fehlerbericht einreichen, aber dann wurde mir klar: Es gibt Geräte, die sowohl Maus- als auch Berührungsfunktionen haben. Das mag natürlich sein, vielleicht definiert Chrome es jetzt, weil mein Betriebssystem beide Arten von Ereignissen unterstützt .
Die Lösungen scheinen also einfach zu sein: Wenden Sie beide Ereignistypen an. Recht?
Nun das Problem findet jetzt auf Handy statt. Um rückwärtskompatibel zu sein und Skripte zu unterstützen, die nur Mausereignisse verwenden, versuchen mobile Browser möglicherweise auch, sie (bei Berührung) auszulösen. Wenn also sowohl Maus- als auch Berührungsereignisse gesetzt sind, kann ein bestimmter Handler jedes Mal zweimal aufgerufen werden.
Wie soll man das angehen? Gibt es eine bessere Möglichkeit, selektive Ereignisse zu überprüfen und anzuwenden, oder muss ich die Probleme ignorieren, die auftreten können, wenn Browser sowohl Touch- als auch Mausereignisse zeitweise auslösen?
Ich bin nicht in der Lage zu testen, wird aber auf einem Touch-Ereignis abbrechen seinem Standardverhalten false Rückkehr (Brennen der ‚rückwärts kompatibel‘ Mausereignis?) – gnarf