2012-12-31 11 views
17

Ich weiß, es gibt eine Menge dieser Fragen im Internet, aber ich habe jede Lösung (alle Antworten von this question) versucht, und keiner von ihnen hat funktioniert.PhoneGap + jQuery Mobile = langsame tippen Antwortzeit

Wenn ich die Website in meinem PC-Browser ausführen, ist alles in Ordnung, aber sobald ich auf dem Telefon bereitstellen, ist die Reaktionszeit sehr verzögert.

Ich habe versucht mit FastClick, HoverDelay auf 0 setzen und binden meine eigenen Ereignisse, aber das Ergebnis ist das gleiche.

Verwenden Sie Android 4.1. Würde mich über jede Hilfe freuen, die ich nicht ausprobiert habe.

+0

Als Referenz ist hier eine gute JQM Performance-Tuning-Liste: http://blog.safaribooksonline.com/2012/07/20/jquery-mobile-performance-improvement/ – Hope4You

Antwort

24

Um JQM zu beschleunigen, müssen Sie alle Übergänge deaktivieren.

Es ist mies, aber die JQM-Übergänge sind zu langsam für mobile Geräte, auch auf iOS. Wir müssen nur ein paar Jahre warten, bis die Hardware schneller wird, vermute ich. Dies ist trotz des JQM-Teams, das versucht, die Leistung in 1.2 zu verbessern. Ich kann die Übergänge immer noch nicht verwenden, ohne dass meine Apps träge sind.

Ich verwende diese Einstellungen immer, um die beste Leistung von jQuery mobile zu erhalten.

$.mobile.defaultPageTransition = 'none' 
$.mobile.defaultDialogTransition = 'none' 
$.mobile.buttonMarkup.hoverDelay = 0 

Wie gut, wenn Sie irgendeine Javascript schreiben, tun nicht binden an irgendwelchen ‚Klick‘ Ereignisse. Der Klick ist auf mobilen Geräten viel zu langsam, da er eine zusätzliche Verzögerung von 300 ms hat, bevor das Ereignis ausgelöst wird.

Da Sie JQM verwenden, können Sie stattdessen ihr eigenes Klickereignis vclick verwenden (das unter der Haube touchstart und touchend Ereignisse verwendet).

Wenn es danach immer noch sehr langsam für Sie ist, müssen Sie möglicherweise untersuchen, was in Ihren Klickereignissen tatsächlich passiert - vielleicht ist Ihr Code nicht so optimiert, wie er sein könnte.

+0

Haben die Übergänge etwas damit zu tun, was passiert, bevor sie tatsächlich anspringen? Da der Übergang selbst fehlerfrei auf meinem Telefon funktioniert, ist es die Verzögerung * bevor * der Übergang beginnt, der mich stört. Außerdem habe ich kein JS, außer einem benutzerdefinierten Ladebildschirm, der eine 'changePage' ausführt, sobald Cordova & JQM geladen sind, und das ist so ziemlich alles. Ich werde versuchen, die Übergänge zu deaktivieren und komme mit Feedback zurück. Vielen Dank! –

+1

Nein, sorry, keine Übergänge und immer noch die Verzögerung. Ich habe sogar versucht, den JQM-Kern zu ändern, um die HoverDelay durch 0 zu ersetzen, aber immer noch nichts. –

+1

@EduardLuca Ich würde sagen, an diesem Punkt müssen Sie herausfinden, ob es der Inhalt auf Ihrer Seite ist, der die Langsamkeit verursacht. Manchmal, wenn das DOM in einer JQM-App zu groß wird, kann es langsam erscheinen. Wie sieht Ihre Seite aus und was dauert es zu lange? – asgeo1

2

Sie wären besser dran, wenn Sie das Ereignis Ereignis als das Click-Ereignis verwenden, wenn Sie dies für eine mobile Anwendung umgehen möchten.

Haben Sie einen Lese von Tap vs. Click: Death by Ignorance von John Bender

1

für mich Dieser Code-Schnipsel

arbeitete
var ua = navigator.userAgent, 
event = (ua.match(/iPad|Android/i)) ? "touchstart" : "click"; 

$("button,a").bind(event, function() 
{ 
    $(this).trigger('click'); 
}); 
Verwandte Themen