我需要找到要在WkWebView中加载的URL的导航目标。 WkWebView中的Web应用程序可配置为在iframe或新窗口中打开特定链接(弹出target="_blank"
)。
互联网上的几个答案可以很容易地找出链接是否将在新框架中打开。以下检查将执行此操作。回调来自WKNavigationDelegate
:
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil {
// new frame
}
return nil
}
问题:我不知道它是由target="_blank"
还是iframe引起的。这两种方法都会导致上述情况成立。
编辑:我无法通过导航网址决定,因为它不会改变。
答案 0 :(得分:1)
您可以使用以下函数拦截单击的URL,然后编写框架逻辑:
func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print(\(webView.URL!.absoluteString))
}