Swift-WKWebKit-无法在外部浏览器(Safari)中打开链接

时间:2018-11-06 19:51:39

标签: ios swift uiwebview wkwebview

我正在从WKWebView中的Google驱动器文档(已发布)加载内容,但是无法打开某些链接。我正在尝试在Safari中打开它们,但如果可以在Webview中打开它们,也可以。

我通过以下方法使用WKUIDelegate:

    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        let url = navigationAction.request.url!
        print(navigationAction.request.url!)
        if navigationAction.targetFrame == nil, UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.open(navigationAction.request.url!, options: [:], completionHandler: nil)

        }
        return nil
    }

这里的问题是navigationAction.request.url!对于某些链接是“”(空),因此我无法打开它们(canOpenURL返回false)

例如,我无法打开的链接如下所示:

<a class="c6" href="https://www.google.com/url?q=https://www.youtube.com/watch?v%3DYK.....">Tutorial</a>

我可以打开的链接:

<a target="_blank" title="Learn more about Google Drive" href="//docs.google.com/">Google Drive</a>

在最后一种情况下,navigationAction.request.url与标记中所写的一样有效。

有没有办法解决这个问题?

编辑: 我尝试长按链接并复制链接,似乎URL已正确复制,因此加载的html中没有问题。

经过另外几次测试,我发现实际链接存在一些问题,例如,如果我尝试打开https://google.com/url .... https://docs.google.com ...或youtube.com或其他网站可以,但是如果我尝试打开https://www.google.com/ ...,则无法使用

0 个答案:

没有答案