2013-04-13 35 views

Trả lời

13

Nếu bạn thay đổi các liên kết của mình để sử dụng cú pháp InAppBrowser mới, thì thật dễ dàng mở URL của bạn trong trình duyệt web của hệ thống, trình duyệt InAppBrowser hoặc webview thực tế của ứng dụng của bạn.

Mã này nên mở URL của bạn trong trình duyệt hệ thống web (Safari trên iOS):

<a href="#" onclick="var ref = window.open('http://google.com', '_system');"> 

Thay đổi '_system'-'_blank' sẽ mở URL trong InAppBrowser.

Thay đổi '_system' thành '_self' sẽ mở URL trong chế độ xem web của ứng dụng của bạn (nếu miền được đưa vào danh sách trắng) hoặc InAppBrowser (nếu miền không có trong danh sách trắng).

mẫu Gist: https://gist.github.com/wicketyjarjar/7043336

Lưu ý: Cordova/PhoneGap 3.0+ đòi hỏi các plugin InAppBrowser phải được cài đặt trước khi điều này sẽ làm việc.

Để cài đặt plugin InAppBrowser (nếu cần) ...

Sử dụng Cordova: cordova plugin add org.apache.cordova.inappbrowser

Sử dụng PhoneGap: phonegap local plugin add org.apache.cordova.inappbrowser

+0

tôi cố gắng này cũng nhưng liên kết không làm việc cởi mở trong cùng một AppBrowser –

+0

Làm việc với tôi, đây là mẫu: https://gist.github.com/anonymous/5394042 – wicketyjarjar

+0

liên kết xấu. đi tới trang 404 ... –

0

Giải pháp của tôi là như dưới đây: đầu tiên tôi xác định một chức năng để mở url an toàn:

LaunchNewWindow: function (url) {  
    if (window.location.toStringing().match(/file/i) && navigator.userAgent.match(/iPhone|iPad|iPod/i)) { 
    window.open(url+"_xex_", "_blank");} 
    else{ 
    window.open(url, "_blank"); 
    } 
} 

sau đó bạn hav e phải thay đổi mã trong CordovaLic \ classses \ CDViewController.m (CordovalLib 3.0.0) để xử lý url spacial của bạn: tôi đã thêm nó vào line685:

else { 

// start stoneskin's change: force open external url in safari        
           if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) { 
    NSString *myurlstr = [url absoluteString]; 
    if ([myurlstr rangeOfString:@"_xex_"].location != NSNotFound){ 
     myurlstr = [myurlstr stringByReplacingOccurrencesOfString:@"_xex_" withString:@""]; 
     NSURL *myurl = [NSURL URLWithString:myurlstr]; 
     [[UIApplication sharedApplication] openURL:myurl]; 
     return NO; 
    } 

} 
//end start stoneskin's change 
if ([self.whitelist schemeIsAllowed:[url scheme]]) { 
    return [self.whitelist URLIsAllowed:url]; 
} else { 
    if ([[UIApplication sharedApplication] canOpenURL:url]) { 
     [[UIApplication sharedApplication] openURL:url]; 
} else { // handle any custom schemes to plugins 
     [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]]; 
} 
} 

return NO; 
} 
Các vấn đề liên quan