Sto costruendo un'app PhoneGap. Sfortunatamente, quando si esegue la distribuzione su dispositivi iOS e simulatori, l'evento deviceready
non viene mai attivato. Sto usando Phonegap 2.2.0.Devono che il licenziatario non stia sparando utilizzando Cordova 2.2.0 in iOS
Quando distribuisco lo stesso codice su Android (utilizzando il file specifico per Android cordova.js
), l'app funzionerà perfettamente.
Quando sostituisco lo deviceready
con un jQuery- ready()
, l'app verrà caricata anche su iOS, ma non avrà quindi accesso alle API specifiche del dispositivo.
Il cordova.js
viene caricato in quanto vedrò un semplice messaggio di avviso che ho inserito al suo interno, tuttavia deviceready
non si attiva mai e le API non vengono mai esposte.
miei HTMLs head
:
<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script> <!-- yes it is the iOS version -->
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/app.js"></script>
miei JS:
function doStuff(){
//app functionality
}
document.addEventListener('deviceready', doStuff, false);
Ma in qualche modo roba otterrà solo fatto su Android ...
che sembra essere la causa del problema, grazie. Ma ad essere onesti, sono ancora un po 'confuso dal fatto che non capisco perché ho bisogno di annidare un gestore di eventi all'interno di un altro gestore di eventi. Il metodo 'addEventListener' dovrebbe essere disponibile sin dall'inizio come' document', no? Hai una spiegazione per questo comportamento? – m90
hai caricato un carico di corpo =? Questo mi ha fatto inciampare la prima volta. Sono d'accordo con te sarebbe strano se la configurazione del gestore di eventi doppio fosse la soluzione. – olore
No, non ne avevo uno in primo luogo perché non avevo la "logica", quando usarlo "in qualche modo" funziona, eppure sono andato avanti ad usare l'approccio che utilizza l'impostazione di default del progetto, vedere la mia risposta sotto. – m90