2012-04-30 146 views
21

是否有URI方案將Mobile Safari打開到特定的URL?從WebView中的鏈接打開移動Safari

例如,

<a href="safari://open_url/?url=google.com">Open Google in Safari</a> 
+0

你曾經能夠找到一個方法來做到這一點? –

+0

我也在尋找這個。 – CodeMilian

+0

你是否找到解決辦法? –

回答

4

更新: 所以,作爲的iOS 6.0.2的,還有不特定於MobileSafari(見下文)的URL方案。但是,Federico Viticci發佈了一個interesting hack,可以讓你從iOS版的Chrome瀏覽器調用Safari。它不如Chrome-to-Safari小書籤功能強大,但它確實表明可以從Chrome for iOS啓動MobileSafari。

原始回答: 事實證明,您不能使用URI方案在Safari中打開鏈接。其他應用程序中的超鏈接可以使用openURL(請參閱其他答案)在safari中打開,但MobileSafari本身沒有任何方案(如果您要在Safari中使用Chrome或Opera for iOS中的超鏈接打開鏈接,則需要使用此方案。

谷歌瀏覽器有以下兩個URI方案:googlechrome://googlechromes://(用於HTTPS),只是工作的任何其他應用程序特定的方式(如dayone://things://,或sms://)。

3

試試這個:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com/"]]; 
+0

我需要鏈接在HTML中,而不是客戶端應用程序代碼。更新問題更清晰 - 抱歉西蒙! –

+1

我認爲Kirk正在尋找一個特定的URL方案(類似於在5.1之前用於打開偏好的URL方案:'[NSURL URLWithString:@「prefs:root = LOCATION_SERVICES」]];')。 –

+0

@Kirk我剛剛編輯了我的答案,如果你用HTTP方案打開一個URL,它將使用移動Safari。 –

3

OK,我想我明白你問什麼。

有一個類實現UIWebViewDelegate協議。實施方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

只要用戶在您的web視圖中點擊鏈接,就會調用此方法。你可以得到用戶點擊的URL,檢查request參數。然後,您可以截取您想要在移動Safari中打開的任何鏈接,而不是在您的webView中打開,然後在共享應用程序上調用-openURL:,就像我的其他答案一樣。

[[UIApplication sharedApplication] openURL:URLFromRequest]; 
0

您也可以使用WebKit JavaScript的橋https://github.com/marcuswestin/WebViewJavascriptBridge

這可以讓你從JavaScript將消息發送到Xcode中。 我用它來從HTML頁面關閉網頁視圖:

self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView handler:^(id data, WVJBResponseCallback responseCallback) { 
      NSLog(@"Received message from javascript: %@", data); 
      if ([data isEqual:@"closewin!"]) 
       [self dismissModal]; 
     }]; 

但你也可以使用此跳轉到Safari或任何你想