2013-02-11 5 views
9

Sto utilizzando un componente Cleaver Cordova 2.4 e una vista incorporata nell'applicazione iOS 6 nativa. Finora sono riuscito a creare la struttura del progetto, collegare le librerie Cordova e configurare l'app Hello World che funziona fornendo feedback "Device Ready".Caricamento di html remoto in PhoneGap o Cleaver (Cordova) su iOS

Questo è tutto ottimo ma carica tutto il codice HTML dal repository www distribuito all'interno dell'app stessa (comprese tutte le librerie js).

Quello che voglio fare è questo yo:

1 - popup componente mannaia (che altro non è che un UIWebView embedded) nella mia app. Facile - fatto.

2 - caricare alcuni contenuti html da un URL che punta a un servlet sul mio server remoto. Ho diversi servlet e devo essere in grado di caricare ognuno di essi separatamente, naturalmente.

3- il contenuto generato nel passaggio 2 interagisce con la mia app nativa tramite cordova javascript libs cordova-2.4.0.js - (come carico questi se sono locali al dispositivo ma html è stato caricato dalla posizione remota).

Come posso configurarlo?

P.S.

io sono più di Obj-C di JavaScript sviluppatore :)

risposta

10

Ecco la risposta. Che gioia ...

excellent article on dynamic page loading in PhoneGap and Cordova

Proprio quello che mi serviva. La seconda parte del progetto consisteva nell'abilitare il codice nativo per forzare il caricamento di servizi Web esterni: l'ho realizzato chiamando stringByEvaluatingJavaScriptFromString nella visualizzazione Web di Cleaver.

[webview stringByEvaluatingJavaScriptFromString:@"app.loadExternal('www.usatoday.com')]; è il codice che funziona come un fascino :)

Viola - Ho un Cleaver vista in grado di caricare il contenuto HTML esterno in completa comunicazione a due vie tra l'applicazione javascript e il contenitore nativo.

8

Dentro il tuo file index.html fare qualcosa di simile (per il punto 2)

<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> 
<meta charset="utf-8"> 
<script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script> 
<script type="text/javascript"> 
    function onBodyLoad(){  
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 
    function onDeviceReady(){ 
     window.location.href = <your_remote_url> 
    } 
} 
</script> 

Per il punto 3, il tuo contenuto remoto dovrebbe importare cordova.js e l'interazione (nativo/web) funzionerà come se fosse contenuto locale.

+0

Grazie elio.d ma non esattamente stavo cercando. Ho un sacco di servizi servlet che ho bisogno di invocare dinamicamente e caricare il loro contenuto nella vista - così hardcoding come questo non funzionerà. Inoltre, non voglio ospitare cordova.js sul lato server. Ho trovato la risposta e una soluzione. È tutto nel caricamento di contenuti dinamici tramite Ajax con la pagina di hosting e cordova.js rimane locale ma il div del contenuto che viene caricato su richiesta dai server ... funziona abbastanza bene. – Moonwalker

+1

per alcuni motivi apre in una nuova finestra non sulla finestra dell'applicazione originale qualche idea? –

Problemi correlati