首页 > 解决方案 > 如何从 WKWbView 完成加载中获取标题

问题描述

WKWebView在应用程序中使用并且我正在寻找从 wkwebview 中获取所有标题的完成加载方法webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 就像在UIWebView

func webViewDidFinishLoad(_ webView: UIWebView) {
        print("Finished loads---", webView.request?.allHTTPHeaderFields)
    }

我们怎样才能做到这一点WKWebView

标签: iosswiftuiwebviewwkwebviewwkwebviewconfiguration

解决方案


您需要将视图控制器设置为 WKWebView 导航委托WKNavigationDelegate并实现其decidePolicyFor方法:

optional func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)

试试这样:


func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    let allHTTPHeaderFields = navigationAction.request.allHTTPHeaderFields ?? [:]
    for (key, value) in allHTTPHeaderFields {
        print("key:", key, "value:", value)
    }
    
    if navigationAction.navigationType == .linkActivated  {
        if let url = navigationAction.request.url,
            let host = url.host, !host.hasPrefix("www.google.com"),
            UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.open(url)
            print(url)
            print("Redirected to browser. No need to open it locally")
            decisionHandler(.cancel)
        } else {
            print("Open it locally")
            decisionHandler(.allow)
        }
    } else {
        print("not a user click")
        decisionHandler(.allow)
    }
}

推荐阅读