27

是否有将 Mobile Safari 打开到特定 URL 的 URI 方案?

例如,

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

5 回答 5

5

更新:因此,从 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://)一样工作。

于 2012-10-04T00:59:51.247 回答
3

好的,我想我明白你的要求了。

让一个类实现UIWebViewDelegate协议。实现方法

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

每当用户单击 webview 中的链接时,都会调用此方法。您可以获取用户在检查request参数时单击的 URL。然后,您可以拦截要在移动 Safari 中而不是在 webView 中打开的任何链接,然后-openURL:像我的其他答案一样调用共享应用程序。

[[UIApplication sharedApplication] openURL:URLFromRequest];
于 2012-05-01T21:39:08.600 回答
2

试试这个:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com/"]];
于 2012-04-30T21:00:10.257 回答
1
window.location.replace("x-web-search://?your search here");

Safari 的 URI 方案是 - x-web-search://

这将在 Safari 浏览器中打开您的搜索。

于 2018-04-26T13:39:00.980 回答
0

您还可以使用 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 或任何你想要的东西

于 2015-08-16T12:09:56.787 回答