是否有将 Mobile Safari 打开到特定 URL 的 URI 方案?
例如,
<a href="safari://open_url/?url=google.com">Open Google in Safari</a>
更新:因此,从 iOS 6.0.2 开始,仍然没有特定于 MobileSafari 的 URL 方案(见下文)。然而,Federico Viticci 发布了一个有趣的 hack,允许你从 Chrome for iOS 调用 Safari。它的功能不如 Chrome-to-Safari 小书签,但它确实表明可以从 Chrome for iOS 启动 MobileSafari。
原始答案:事实证明,您无法仅使用 URI 方案在 Safari 中打开链接。其他应用程序中的超链接可以在 safari 中使用openURL
(参见其他答案)打开,但 MobileSafari 本身没有方案(如果您要使用 Chrome 或 Opera for iOS 中的超链接在 Safari 中打开链接,则需要该方案)。
Google Chrome 有以下两种 URI 方案:googlechrome://
和googlechromes://
(用于 HTTPS)与任何其他应用程序特定方案(例如dayone://
、things://
或sms://
)一样工作。
好的,我想我明白你的要求了。
让一个类实现UIWebViewDelegate协议。实现方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
每当用户单击 webview 中的链接时,都会调用此方法。您可以获取用户在检查request
参数时单击的 URL。然后,您可以拦截要在移动 Safari 中而不是在 webView 中打开的任何链接,然后-openURL:
像我的其他答案一样调用共享应用程序。
[[UIApplication sharedApplication] openURL:URLFromRequest];
试试这个:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com/"]];
window.location.replace("x-web-search://?your search here");
Safari 的 URI 方案是 - x-web-search://
这将在 Safari 浏览器中打开您的搜索。
您还可以使用 webkit javascript 桥https://github.com/marcuswestin/WebViewJavascriptBridge
这允许您将消息从 javascript 发送到 xcode。我用它从 html 页面关闭 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 或任何你想要的东西