我正在尝试从第三方 URL 解析出一些 HTML 元数据;然而,直到一些 Javascript 脚本在WKWebView.
所以我一直在尝试检测何时WKWebView用 Javascript 完全加载了网页,但不幸的是我无法做到。
这是我尝试过的:
WKUserContentController并处理协议方法,但这不起作用,因为协议方法仅在收到脚本消息时执行,而不是在完成时执行。WKWebView我尝试为's添加观察者estimatedProgress,但estimatedProgress在 JS 脚本加载完成之前返回 1.0。WKNavigationDelegate协议方法webView(_ webView: WKWebView, didFinish navigation: WKNavigation!),但它本质上与添加观察者相同。WKWebViewsevaluateJavaScript方法observeValue来检查两者:
document.readyState == \"interactive\"document.readyState == \"completed\"但这也不起作用,因为它是在 JS 加载完成之前执行的。
代码
这是我尝试的最后一种方法的代码,但没有成功:
初始化WKWebView
let webView = WKWebView(frame: self.view.frame)
webView.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil)
webView.load(URLRequest(url: url))
webView.navigationDelegate = self
self.view.addSubview(webView)
Run Code Online (Sandbox Code Playgroud)
处理观察者
override func observeValue(forKeyPath keyPath: …Run Code Online (Sandbox Code Playgroud)