Ich habe eine kleine Web-App, die ich mit den WebView-Funktionen von Android erstellt habe.
Ich habe einige divs, die ich als Schaltflächen verwende (mit onclick
-Attributen). Beim Ausprobieren der App (im Browser des Geräts) bemerkte ich sofort nach dem Tippen auf eine Schaltfläche eine große Menge Verzögerung. Die Verzögerung liegt zwischen dem Tippen auf die Schaltfläche und dem Anzeigen des orangefarbenen Hervorhebungsbereichs im Browser es.
Ich habe ein paar Tests gemacht und einige Informationen bekommen:
onclick
-Attribute ausgeblendet. Die Leistung hat sich nicht geändert. Ich bin wirklich ratlos, warum es so viel Verzögerung gibt. Ich habe alles eliminiert, was es verursachen könnte, aber nichts hat geholfen.
Vermisse ich etwas?
Wie kann ich die Verzögerung nach dem Antippen einer Schaltfläche entfernen?
Grundsätzlich werden Klick-Ereignisse in mobilen Browsern um 300 ms verzögert. Kennst du das schnelle Tastenmuster? Grundsätzlich können Sie das touchstart
-Ereignis verwenden (das ohne Verzögerung ausgelöst wird).
Hier ist eine vollständige Erklärung: Ссылка
So hält WebView jedes Tap-Ereignis fest, um zu sehen, ob es sich um ein Double-Tap- oder ein Touch-Move-Event handelt. Es gibt eine Alternative zur Bindung an Touchstart-Ereignisse. Wenn Sie mit der Viewport-Meta-Direktive angeben, dass Ihr WebView nicht zoomen oder scrollen soll, erreichen Touch-Events Ihren Code sofort (seit Gingerbread).
Die Details zur Viewport-Direktive finden Sie hier: Ссылка
Da der Google-Code sehr kompliziert ist, habe ich meine eigenen mit Mootools 1.3 + implementiert:
%Vor%Fügen Sie diesen Code einfach auf Ihrer Seite ein und verwenden Sie jetzt touch statt klicken :
%Vor%Es funktioniert, indem ein Touchend- und Touchstart-Event hinzugefügt wird, wenn sie in weniger als 200 ms vorkommen und die Berührung nicht zu weit geht, ist es eine gültige Berührung, sonst nicht.
Es hat sehr gut auf 2.2 und 4.0
funktioniertTags und Links javascript html android web-applications