2013-02-11 16 views
9

Używam Cleaver składnik Cordova 2.4 i osadzony widok w mojej natywnej aplikacji iOS 6. Do tej pory udało mi się stworzyć strukturę projektu, połączyć biblioteki Cordova i skonfigurować aplikację Hello World, która działa, dostarczając informację zwrotną "Urządzenie gotowe".Ładowanie zdalnego html w PhoneGap lub Cleaver (Cordova) na iOS

To wszystko świetnie, ale ładuje wszystkie html z repozytorium www rozproszonego wewnątrz samej aplikacji (w tym wszystkich bibliotek js).

Co naprawdę chcę yo zrobić to w ten sposób:

1 - popup składnik Cleaver (która nie jest niczym innym niż osadzonego UIWebView) w mojej aplikacji. Łatwe - gotowe.

2 - załaduj zawartość html z adresu URL wskazującego serwlet na moim serwerze zdalnym. Mam kilka serwletów i muszę mieć możliwość załadowania każdego z nich osobno.

3- mają treść wygenerowaną w kroku 2 wchodzić w interakcje z moją natywną aplikacją za pośrednictwem cordova javascript libs cordova-2.4.0.js - (w jaki sposób załadować te, jeśli są lokalne dla urządzenia, ale html został załadowany ze zdalnej lokalizacji).

Jak mogę to ustawić?

P.S.

Jestem bardziej Obj-C niż Javascript dewelopera :)

Odpowiedz

10

Oto odpowiedź. Co za radość ...

excellent article on dynamic page loading in PhoneGap and Cordova

Dokładnie to, czego potrzebowałem. Druga część projektu polegała na włączeniu natywnego kodu wymuszającego ładowanie zewnętrznych serwisów internetowych - osiągnąłem to dzięki nazwie stringByEvaluatingJavaScriptFromString w widoku sieciowym Cleaver.

[webview stringByEvaluatingJavaScriptFromString:@"app.loadExternal('www.usatoday.com')]; jest kod, który działa jak czar :)

Viola - Mam Cleaver zobaczyć zdolne do ładowania zewnętrznej zawartości HTML z pełną dwukierunkową komunikację między aplikacją i javascript rodzimej pojemniku.

8

wewnątrz pliku index.html zrobić coś takiego (do punktu 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> 

W przypadku punktu 3 zdalna zawartość powinna importować cordova.js, a interakcja (natywna/internetowa) będzie działać tak, jakby była zawartością lokalną.

+0

Dzięki elio.d, ale nie do końca było to, czego szukałem. Mam mnóstwo usług serwletów, które muszę wywoływać dynamicznie i ładować ich zawartość do widoku - więc takie hardcoding nie zadziała. Ja też nie chcę hostować cordova.js po stronie serwera. Znalazłem odpowiedź i rozwiązanie. To wszystko w dynamicznym ładowaniu treści przez Ajax ze stroną hostingową i cordova.js pozostaje lokalny, ale zawartość div ładowana na żądanie z serwerów ... działa całkiem nieźle. – Moonwalker

+1

z jakichś powodów otwiera się w nowym oknie, a nie w oryginalnym oknie aplikacji jakieś pomysły? –

Powiązane problemy