我正在从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/ ...,则无法使用