Android WebView: Sehr verzögerte Tastenantwort

8

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:

  • JavaScript ist nicht das Problem. Ich habe alle meine Skripte entfernt und alle onclick -Attribute ausgeblendet. Die Leistung hat sich nicht geändert.
  • CSS3 Zeug ist nicht das Problem. Ich habe all die ausgefallenen Farbverläufe losgeworden und die Performance hat sich nicht geändert.
  • Die Anzahl der Elemente ist nicht das Problem. Ich habe es mit ein paar Elementen auf der Seite versucht und die Leistung hat sich nicht geändert.
  • Doctype und Meta-Sachen sind nicht das Problem. Ich habe dafür gesorgt, dass ich Android Empfehlungen verwendet habe.

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?

    
Nathan 11.09.2011, 00:34
quelle

4 Antworten

16

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: Ссылка

    
Boris Smus 11.09.2011, 00:42
quelle
3

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: Ссылка

    
Albertas Agejevas 27.01.2012 16:52
quelle
3

versuche, den HTML-Code einzufügen

<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, user-scalable=no">

und schneller Klick Klick Klick ist kein Problem mehr (für mich. 4.2.2 und WebChromeClient)

    
wojtura 11.06.2014 21:37
quelle
0

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

funktioniert     
Ali 10.12.2012 12:30
quelle