2012-12-31 3 views
17

Je sais qu'il y a beaucoup de ces questions sur Internet, mais j'ai essayé toutes les solutions (toutes les réponses de this question), et aucune d'elles n'a fonctionné. Lorsque je lance le site dans le navigateur de mon PC, tout va bien, mais dès que je le déploie sur le téléphone, le temps de réponse est très lent.PhoneGap + jQuery Mobile = temps de réponse du robinet lent

J'ai essayé d'utiliser FastClick, en réglant hoverDelay sur 0, et en liant mes propres événements, mais le résultat est le même.

Utilisez Android 4.1. J'apprécierais toute aide autre que ce que j'ai essayé.

+0

Pour référence, voici une bonne liste performance tuning JQM: http://blog.safaribooksonline.com/2012/07/20/jquery-mobile-performance-improvement/ – Hope4You

Répondre

24

Pour accélérer JQM, vous devez désactiver toutes les transitions.

Ça craint, mais les transitions JQM sont trop lentes pour les appareils mobiles, même sur iOS. Nous allons devoir attendre quelques années avant que le matériel ne devienne plus rapide je suppose. C'est en dépit de l'équipe JQM essayant d'améliorer la performance en 1.2. Je ne peux toujours pas utiliser les transitions sans que mes applications ne se sentent paresseuses.

J'utilise toujours ces paramètres pour obtenir les meilleures performances de jQuery mobile. En plus

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

, si vous écrivez une javascript, ne le font pas se lient à des événements « clic ». Le clic est beaucoup trop lent sur les appareils mobiles car il a un délai supplémentaire de 300ms avant que l'événement ne soit déclenché. À la place, vous pouvez utiliser leur propre événement de clic vclick (qui sous le capot utilise les événements touchstart et touchend). Si cela vous est toujours très lent, vous devrez peut-être examiner ce qui se passe réellement dans vos événements de clic - peut-être que votre code n'est pas aussi optimisé qu'il pourrait l'être.

+0

Est-ce que les transitions ont quelque chose à voir avec ce qui se passe avant qu'elles ne se déclenchent? Parce que la transition elle-même fonctionne parfaitement sur mon téléphone, c'est le délai * avant * que la transition commence qui me dérange. De plus, je n'ai pas vraiment de JS, sauf pour un écran de chargement personnalisé qui fait un 'changePage' une fois que Cordova & JQM sont chargés et c'est à peu près tout. Je vais essayer de désactiver les transitions et revenir avec des commentaires. Merci! –

+1

Non, désolé, pas de transitions que ce soit et toujours le décalage. J'ai même essayé de changer le noyau de JQM pour remplacer le hoverDelay avec 0, mais toujours rien. –

+1

@EduardLuca Je dirais à ce stade que vous devez travailler si c'est le contenu de votre page qui cause la lenteur. Parfois, si le DOM devient trop gros dans une application JQM, il peut sembler lent. A quoi ressemble votre page et qui a mordu trop longtemps? – asgeo1

1

Cet extrait de code a fonctionné pour moi

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

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