是否有URI方案將Mobile Safari打開到特定的URL?從WebView中的鏈接打開移動Safari
例如,
<a href="safari://open_url/?url=google.com">Open Google in Safari</a>
是否有URI方案將Mobile Safari打開到特定的URL?從WebView中的鏈接打開移動Safari
例如,
<a href="safari://open_url/?url=google.com">Open Google in Safari</a>
更新: 所以,作爲的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://
)。
試試這個:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com/"]];
我需要鏈接在HTML中,而不是客戶端應用程序代碼。更新問題更清晰 - 抱歉西蒙! –
我認爲Kirk正在尋找一個特定的URL方案(類似於在5.1之前用於打開偏好的URL方案:'[NSURL URLWithString:@「prefs:root = LOCATION_SERVICES」]];')。 –
@Kirk我剛剛編輯了我的答案,如果你用HTTP方案打開一個URL,它將使用移動Safari。 –
OK,我想我明白你問什麼。
有一個類實現UIWebViewDelegate協議。實施方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
只要用戶在您的web視圖中點擊鏈接,就會調用此方法。你可以得到用戶點擊的URL,檢查request
參數。然後,您可以截取您想要在移動Safari中打開的任何鏈接,而不是在您的webView中打開,然後在共享應用程序上調用-openURL:
,就像我的其他答案一樣。
[[UIApplication sharedApplication] openURL:URLFromRequest];
您也可以使用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或任何你想
你曾經能夠找到一個方法來做到這一點? –
我也在尋找這個。 – CodeMilian
你是否找到解決辦法? –