【问题标题】:Open Mobile Safari from a Link in a WebView从 WebView 中的链接打开 Mobile Safari
【发布时间】:2012-05-10 13:17:31
【问题描述】:

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

例如,

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

【问题讨论】:

  • 你有没有找到办法做到这一点?
  • 我也在找这个。
  • 你有办法解决这个问题吗?

标签: ios webview


【解决方案1】:
window.location.replace("x-web-search://?your search here");

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

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

【讨论】:

  • 你知道这是否适用于当前版本的 iOS(例如 12.4 吗?)我在网络上看到了 x-web-search 的建议,但我怀疑这个方案可能已被弃用。
【解决方案2】:

你也可以使用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 或任何您想要的内容

【讨论】:

    【解决方案3】:

    更新: 因此,从 iOS 6.0.2 开始,仍然没有特定于 MobileSafari 的 URL 方案(见下文)。然而,Federico Viticci 已经发布了一个interesting hack,它将允许您从 Chrome for iOS 调用 Safari。它的功能不如 Chrome-to-Safari 小书签,但它确实表明可以从 Chrome for iOS 启动 MobileSafari。

    原答案: 事实证明,您无法仅使用 URI 方案在 Safari 中打开链接。可以使用 openURL 在 Safari 中打开其他应用程序中的超链接(请参阅其他答案),但 MobileSafari 本身没有方案(如果您要使用 Chrome 或 Opera for iOS 中的超链接在 Safari 中打开链接,则需要该方案)。

    Google Chrome 有以下两种 URI 方案:googlechrome://googlechromes://(用于 HTTPS),它们的工作方式与任何其他特定于应用的方案(例如 dayone://things://sms://)一样。

    【讨论】:

      【解决方案4】:

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

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

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

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

      [[UIApplication sharedApplication] openURL:URLFromRequest];
      

      【讨论】:

        【解决方案5】:

        试试这个:

        [[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。
        猜你喜欢
        • 2013-01-07
        • 1970-01-01
        • 1970-01-01
        • 2020-02-09
        • 2011-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多