2012-10-17 23 views
7

ok, przeglądając pytania Znalazłem właściwy sposób załadowania strony zewnętrznej do widoku phonegap (tj. Bez utraty sesji lub otwarcia przeglądarki urządzenia), jak wyjaśniono tutaj : How can I load a webpage inside the phonegap webview? i tutaj: PhoneGap for iPhone: problem loading external URLphonegap: otwórz zewnętrzną stronę, a następnie wróć do aplikacji

Następny krok to: po tym, jak otworzył extarnal stronę (jest własnością mnie i mogę go zmodyfikować) jak mogę wrócić do mojego lokalnego aplikacji? Załóżmy, że mam link na stronie zewnętrznej i chcę, aby użytkownik został przekierowany z powrotem na lokalną stronę html (mypage.html) wewnątrz aplikacji phonegap za pomocą kliknięcia.

Jaki adres powinien mieć atrybut href łącza? Próbowałem ustawić go na "file: ///android_asset/www/mypage.html", ale nie działa

Odpowiedz

3

Chcesz użyć wtyczki ChildBrowser, aby otworzyć zewnętrzną stronę internetową. Następnie chcesz ustawić właściwość ChildBrowser.onLocationChange na swoją własną funkcję. Następnie, gdy osoba odejdzie od strony zdalnej, zostaniesz powiadomiony o zmianie lokalizacji, dzięki czemu możesz zamknąć ChildBrowser i przejść do nowej strony lokalnej. Nie musisz nawet dotykać strony zdalnej html.

Tak, aby zamknąć przeglądarkę, gdy użytkownik opuści zdalnego stronie:

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

Dziękuję bardzo. Nawiasem mówiąc, ponieważ jest to tylko obejście innego problemu, czy istnieje sposób, aby powrócić do strony lokalnej ze strony zewnętrznej, której nie mogę edytować, ale który może otrzymać adres URL wywołania zwrotnego jako parametr? –

+0

Tak, możesz to zrobić. Właśnie dodałem kod do mojej odpowiedzi. –

+0

świetnie, dziękuję! –

1

Co trzeba to ten czarodziej w MainViewController.m To działa na mnie w Cordova Cordova 1.9.0 1.7.0 i 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

Dzięki. Wydaje się to dość związane z iPhonem. Sprawdzę to również na cordova dla Androida. –

+0

Tak, to jest związane z iPhonem. Nie powinieneś mieć żadnych problemów z cordova-android – iOSAndroidWindowsMobileAppsDev

1

Używa PhoneGap/Cordova 2.7. W zewnętrznej aplikacji dodaj link, który wskazuje na "app: // index".

Wewnątrz onCreate dodać:

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); 
     } 
    } 
}); 

to przechwyci połączenie i przekierować użytkownika do skonfigurowanej startowym URL.

Powiązane problemy