La relazione tra le funzioni “onBodyLoad () / onDeviceReady ()” di Phonegap e “$ (document) .ready ()” di Jquery

Sto usando PhoneGap + jQuery Mobile in Android, sono confuso riguardo le funzioni “onBodyLoad () / onDeviceReady ()” di PhoneGap e “$ (document) .ready ()” di Jquery.

Nei documenti PhoneGap:

PhoneGap è costituito da due basi di codice: nativo e JavaScript. Mentre viene caricato il codice nativo, viene visualizzata un’immagine di caricamento personalizzata. Tuttavia, JavaScript viene caricato solo dopo il caricamento del DOM. Ciò significa che la tua applicazione web potrebbe, potenzialmente, chiamare una funzione JavaScript di PhoneGap prima che venga caricata.

L’evento deviceready di PhoneGap si triggers quando PhoneGap è stato caricato completamente. Dopo che il dispositivo è stato triggersto, è ansible effettuare chiamate in modo sicuro alla funzione PhoneGap.

In genere, si desidera associare un listener di eventi con document.addEventListener una volta caricato il DOM del documento HTML.

Nel documento jQuery:

Mentre JavaScript fornisce l’evento di caricamento per l’esecuzione del codice quando viene eseguito il rendering di una pagina, questo evento non viene triggersto fino a quando tutte le risorse come le immagini non sono state completamente ricevute. Nella maggior parte dei casi, lo script può essere eseguito non appena la gerarchia DOM è stata completamente costruita. Il gestore passato a .ready () è garantito per essere eseguito dopo che il DOM è pronto, quindi di solito è il posto migliore per colbind tutti gli altri gestori di eventi ed eseguire altro codice jQuery. Quando si utilizzano script che si basano sul valore delle proprietà di stile CSS, è importante fare riferimento a fogli di stile esterni o incorporare elementi di stile prima di fare riferimento agli script.

Nei casi in cui il codice si basa su risorse caricate (ad esempio, se sono richieste le dimensioni di un’immagine), il codice deve essere inserito in un gestore per l’evento di caricamento.

I miei esperimenti dimostrano che ready () è sempre precedente a onDeviceReady (), come spiegarlo? Come dovrei usarli? Devo mettere ready () in onDeviceReady () per rendere sicura ogni chiamata?

Grazie in anticipo.

Saluti, Chris

$(document).ready verrà sempre triggersto per primo perché viene triggersto quando tutti gli elementi DOM sono stati caricati. Immagini, funzioni javascript, css, ecc. Potrebbero non essere state caricate a quest’ora.

Quindi PhoneGap ha messo il metodo onload sul metodo onLoad del corpo in modo che si attivi quando quella particolare parte del DOM è pronta. Una volta preparato il DOM, crei un listener di eventi per assicurarti che phonegap.js sia pronto (e non solo l’interfaccia utente dell’applicazione, ad esempio). Solo dopo aver caricato phonegap.js puoi utilizzare le funzioni che fornisce.

Quindi sì, $(document).ready verrà $(document).ready per primo, ma ciò non significa che tu possa usare phonegap.js (le chiamate ‘api’). Non è ansible inserire $(document).ready all’interno di un’altra funzione (per quanto ne so), poiché è triggersta dal DOM in fase di caricamento. È ansible (ma non dovrebbe) tuttavia chiamare la funzione onDeviceReady da $(document).ready . Il problema è che se il dispositivo NON è effettivamente pronto, le chiamate api non verranno effettuate.

Quindi continuerei a usare la catena onLoad / onDeviceReady che hanno impostato. Fammi sapere se questo ha bisogno di più elaborazione.