2012-09-16 154 views
1

我正在使用Sencha Touch和PhoneGap。該代碼是iOS和它等待後綴#的PhoneGap,外部URL ..刪除部分網址

- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
NSURL *url = [request URL]; 
if (([url fragment] != NULL) && ([[url fragment] rangeOfString:@"phonegap=external"].location != NSNotFound)) 
{ 
    if ([[UIApplication sharedApplication] canOpenURL:url]) { 
     [[UIApplication sharedApplication] openURL:url]; 
     return NO; 
    } 
} 

return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType]; 
} 

,是因爲我沒有寫的OBJ - C的任何一行代碼,我需要你的幫助。有人可以編輯代碼,以便它可以打開沒有後綴的網址。

編輯: 如果用戶在應用程序中打開網址,它會在web視圖中打開它,但有時我更喜歡在Safari中打開網址。所以這段代碼檢查url是否有這樣的後綴 - http://google.com#phonegap-external,並且它在Safari中打開它。唯一讓我感到困擾的是,url並沒有變成http://google.com,它打開了給定的網址http://google.com/#phonegap-external。有人可以解決這個問題。

+0

你是什麼意思的'它會打開沒有後綴的URL'?這段代碼做什麼/不做什麼,你不會/會期望? – 2012-09-16 19:58:43

+0

我添加了一個例子。 –

+0

謝謝,看到我的答案。 – 2012-09-16 20:11:59

回答

2

如果您確定URL中指示是以內聯還是外部方式打開的部分(即#phonegap-external字符串)始終是URL中的最後一個,那麼您可以嘗試刪除該後綴如下所示:

NSString *orig = [url absoluteString]; 
size_t frLen = [@"phonegap-external" length]; 
NSString *stripped = [orig substringToIndex:orig.length - frLen]; 
NSURL *newURL = [NSURL URLWithString:stripped]; 

[[UIApplication sharedApplication] openURL:newURL];