2012-10-17 17 views
7

ok, sfogliando le domande ho trovato il modo giusto per caricare una pagina esterna nella visualizzazione di tipo phonegap (cioè senza perdere la sessione o aprire il browser del dispositivo) come spiegato qui : How can I load a webpage inside the phonegap webview? e qui: PhoneGap for iPhone: problem loading external URLphonegap: aprire la pagina esterna e poi tornare all'app

passo successivo è: dopo che ho aperto una pagina extarnal (è di proprietà da me e posso modificarlo) come posso tornare alla mia applicazione locale? Diciamo che ho un link nella pagina esterna e voglio che l'utente venga reindirizzato a una pagina html locale (mypage.html) all'interno dell'applicazione phonegap al clic.

Quale URL deve avere l'attributo href del collegamento? Ho provato a impostarlo su "file: ///android_asset/www/mypage.html" ma non ha funzionato

risposta

3

Si desidera utilizzare il plug-in ChildBrowser per aprire la pagina Web esterna. Quindi si desidera impostare la proprietà ChildBrowser.onLocationChange sulla propria funzione. Quindi, quando la persona si allontana dalla pagina remota, ti verrà notificato il cambio di posizione in modo da poter quindi chiudere ChildBrowser e navigare verso una nuova pagina locale. Non avrai nemmeno bisogno di toccare la pagina html remota.

Quindi, per chiudere il browser quando l'utente si sposta dalla pagina remota:

cb.onLocationChange = function(loc){ 
    console.log("location = " + loc); 
    if (loc != "http://example.com") { 
     cb.close(); 
    } 
}; 
+0

Grazie mille. A proposito, dal momento che questo è solo una soluzione a un altro problema, c'è un modo per tornare a una pagina locale da una pagina esterna che non posso modificare, ma che può ricevere un url di richiamata come parametro? –

+0

Sì, puoi farlo. Ho appena aggiunto del codice alla mia risposta. –

+0

fantastico, grazie! –

1

Quello che vi serve è questo incantatore nella tua MainViewController.m Funziona per me a Cordova 1.7.0 cordova 1.9.0 e cordova 2.1.0

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request   navigationType:(UIWebViewNavigationType)navigationType 
{ 
NSURL *url = [request URL]; 

// Intercept the external http requests and forward to Safari.app 
// Otherwise forward to the PhoneGap WebView 
if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) { 
[[UIApplication sharedApplication] openURL:url]; 
return NO; 
} 
else { 
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ]; 
} 
    } 
+0

Grazie. Questo sembra molto legato all'iPhone, lo controllerò su cordova anche per Android. –

+0

sì è collegato iPhone. Non dovresti avere problemi con cordova-android – iOSAndroidWindowsMobileAppsDev

1

Questo sta utilizzando PhoneGap/Cordova 2.7. All'interno della tua app esterna, aggiungi un link che rimanda a "app: // index".

All'interno onCreate aggiungere:

this.appView.setWebViewClient(new CordovaWebViewClient(this, this.appView) { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.equalsIgnoreCase("app://index")) { 
      Log.d("DEBUG", url); 

      loadUrl(Config.getStartUrl()); 

      return true; 
     } else { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 
}); 

Ciò intercettare la chiamata e reindirizzare l'utente all'URL iniziale progettata.

Problemi correlati