从WebView中的链接打开移动Safari

有一个URIscheme来打开移动Safari的特定url?

例如,

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

更新 :因此,截至iOS 6.0.2,仍然没有一个特定于MobileSafari的URLscheme(见下文)。 但是,Federico Viticci发布了一个有趣的黑客攻击 ,可以让你从iOS版的Chrome浏览器中调用Safari。 它不像Chrome到Safari的小书签function,但它确实显示可以从iOS版Chrome启动MobileSafari。

原来的答案 :事实certificate,你不能使用URIscheme在Safari中打开链接。 其他应用程序中的超链接可以使用openURL在safari中打开(请参阅其他答案),但MobileSafari本身没有任何scheme(如果您要在Safari中使用Chrome或Opera for iOS中的超链接打开链接,则需要使用此scheme。

Google Chrome有以下两种URIscheme: googlechrome://googlechromes:// (对于HTTPS),其工作方式与其他特定于应用程序的scheme(如dayone://things://sms:// )。

尝试这个:

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

好吧,我想我明白你在问什么。

有一个类实现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。 我用它来closureshtml页面的webview:

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

但你也可以用它来跳转到Safari或任何你想要的