ios - 如何从 WKWbView 完成加载中获取标题
问题描述
我WKWebView
在应用程序中使用并且我正在寻找从 wkwebview 中获取所有标题的完成加载方法webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
就像在UIWebView
func webViewDidFinishLoad(_ webView: UIWebView) {
print("Finished loads---", webView.request?.allHTTPHeaderFields)
}
我们怎样才能做到这一点WKWebView
?
解决方案
您需要将视图控制器设置为 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)
}
}
推荐阅读
- postgresql - 更改 postgres 超级用户的身份验证方法
- batch-file - 如何让批处理文件打开文件浏览器以选择文件夹
- python - 如何使眼睛的投资回报率成为单个矩形
- powershell - PowerShell 在另一台服务器上运行计划任务
- python - “Pythonic”类级递归?
- javascript - useReducer - 如何获取和更新之前的状态
- python - 当我使用 mpmath(正函数)增加积分范围时,积分值减小
- grafana - 如何在 Grafana 的变量过滤器上选择多个变量?
- python - 如何使用 selenium webdriver 获取 vue 对象的值?
- xml - 如何使用 ef core 将 xml 文件中的数据保存在相关表中?