2012-10-17 27 views
7

ok, duyệt các câu hỏi tôi đã tìm đúng cách để tải trang bên ngoài vào chế độ xem điện thoại (tức là không mất phiên hoặc mở trình duyệt thiết bị) như được giải thích tại đây : How can I load a webpage inside the phonegap webview? và tại đây: PhoneGap for iPhone: problem loading external URLphonegap: mở trang bên ngoài và sau đó quay lại ứng dụng

Bước tiếp theo là: sau khi tôi mở trang extarnal (nó thuộc sở hữu của tôi và tôi có thể sửa đổi) làm cách nào tôi có thể quay lại ứng dụng cục bộ của mình? Giả sử tôi có một liên kết trong trang bên ngoài và tôi muốn người dùng được chuyển hướng trở lại trang html cục bộ (mypage.html) bên trong ứng dụng Phonegap khi nhấp chuột.

Thuộc tính href của liên kết nên có gì? Tôi đã thử đặt nó thành "tệp: ///android_asset/www/mypage.html" nhưng không hoạt động

Trả lời

3

Bạn muốn sử dụng plugin ChildBrowser để mở trang web bên ngoài. Sau đó, bạn muốn đặt thuộc tính ChildBrowser.onLocationChange thành hàm của riêng bạn. Sau đó, khi người điều hướng khỏi trang từ xa, bạn sẽ được thông báo về thay đổi vị trí để sau đó bạn có thể đóng ChildBrowser và điều hướng đến một trang địa phương mới. Bạn thậm chí sẽ không cần phải chạm vào trang html từ xa.

Vì vậy, để đóng trình duyệt khi người dùng điều hướng khỏi trang từ xa:

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

Cảm ơn bạn rất nhiều. Nhân tiện, vì đây chỉ là cách giải quyết vấn đề khác, có cách nào để quay lại trang địa phương từ trang bên ngoài mà tôi không thể chỉnh sửa, nhưng có thể nhận url gọi lại làm tham số không? –

+0

Có, bạn có thể làm điều đó. Tôi chỉ cần thêm một số mã vào câu trả lời của tôi. –

+0

tuyệt vời, cảm ơn bạn! –

1

Những gì bạn cần quyến rũ này trong MainViewController.m của bạn là Nó làm việc cho tôi trong cordova 1.7.0 cordova 1.9.0 và 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

Cảm ơn. Điều này có vẻ khá liên quan đến iphone tôi sẽ kiểm tra xem nó ra trên cordova cho android quá. –

+0

có liên quan đến iPhone. Bạn không nên gặp bất kỳ sự cố nào với cordova-android – iOSAndroidWindowsMobileAppsDev

1

Điều này đang sử dụng PhoneGap/Cordova 2.7. Bên trong ứng dụng bên ngoài của bạn, thêm liên kết trỏ đến "app: // index".

Bên trong onCreate thêm:

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

Điều này sẽ ngăn chặn các cuộc gọi và chuyển hướng người dùng đến url bắt đầu cấu hình.

Các vấn đề liên quan