2012-12-31 10 views
17

So che ci sono molte di queste domande su Internet, ma ho provato ogni soluzione (tutte le risposte di this question) e nessuna ha funzionato.PhoneGap + jQuery Mobile = tempo di risposta del rubinetto lento

Quando eseguo il sito nel browser del mio PC, tutto va bene, ma non appena eseguo l'installazione sul telefono, il tempo di risposta è molto lento.

Ho provato a utilizzare FastClick, impostando hoverDelay su 0 e vincolando i miei eventi, ma il risultato è lo stesso.

Sto usando Android 4.1. Gradirei qualsiasi aiuto diverso da quello che ho provato.

+0

Per riferimento, ecco un elenco delle prestazioni a punto buona jQm: http://blog.safaribooksonline.com/2012/07/20/jquery-mobile-performance-improvement/ – Hope4You

risposta

24

Per accelerare JQM, è necessario disattivare tutte le transizioni.

Fa schifo, ma le transizioni JQM sono troppo lente per i dispositivi mobili, anche su iOS. Dovremo solo aspettare qualche anno finché l'hardware diventa più veloce, sospetto. Questo nonostante il team JQM sta tentando di migliorare le prestazioni in 1.2. Non riesco ancora a utilizzare le transizioni senza che le mie app si sentano lente.

Io uso sempre queste impostazioni per ottenere le migliori prestazioni da jQuery mobile.

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

Così, se si sta scrivendo qualsiasi JavaScript, non lo fanno legano a tutti gli eventi 'Click'. Il clic è troppo lento sui dispositivi mobili poiché ha un ritardo aggiuntivo di 300 ms prima dell'attivazione dell'evento.

Poiché si utilizza JQM, è possibile utilizzare il proprio evento click vclick (che sotto il cofano sta utilizzando gli eventi touchstart e touchend).

Se dopo di ciò è ancora molto lento, potrebbe essere necessario esaminare cosa sta effettivamente accadendo negli eventi dei clic, forse il codice non è ottimizzato come potrebbe essere.

+0

Le transizioni hanno qualcosa a che fare con ciò che accade prima che si accendano? Poiché la transizione stessa funziona perfettamente sul mio telefono, è il ritardo * prima * che inizia la transizione che mi infastidisce. Inoltre non ho alcun JS, ad eccezione di una schermata di caricamento personalizzata che fa un 'changePage' una volta caricati Cordova e JQM e questo è praticamente tutto. Proverò a disabilitare le transizioni e a tornare con un feedback. Grazie! –

+1

No, mi spiace, nessuna transizione di sorta e ancora il ritardo. Ho anche provato a cambiare il core JQM per sostituire hoverDelay con 0, ma ancora nulla. –

+1

@EduardLuca Direi che a questo punto è necessario capire se è il contenuto della pagina a causare la lentezza. A volte, se il DOM diventa troppo grande in un'app JQM, può apparire lento. Come appare la tua pagina e quale bit ha richiesto troppo tempo? – asgeo1

1

Questo frammento di codice ha funzionato per me

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

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