使用 UIWebView
时,我想检测网页在 iOS
应用程序中完成加载的时刻。
为此,我尝试使用 this post 中提到的解决方案.
但问题是,webViewDidFinishLoad() 函数在页面出现在显示屏上之前就被调用了(几乎在调用loadRequest()之后),这使得解决办法没用。 我错过了什么吗?或者有更好的(或不同的)方法吗?
附注我使用的是 Xcode 版本 8.3.2 和 iOS 版本 10.3.2
最佳答案
每一个加载HTML内容的页面都会调用webViewDidFinishLoad...所以我设置了三种类型的验证。使用您最喜欢的一个。
var webViewPages = 0
func webViewDidStartLoad(_ webView: UIWebView) {
webViewPages += 1
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
webViewPages -= 1
}
func webViewDidFinishLoad(_ webView: UIWebView) {
if (webView.isLoading){
return
}
if webView.stringByEvaluatingJavaScript(from: "document.readyState") != "complete"{
return
}
webViewPages -= 1
if webViewPages > 0{
return
}
// Calculating webview height
let height = Int(webView.stringByEvaluatingJavaScript(from: "document.body.scrollHeight")!)
}
关于ios - UIWebView FinishLoad/检测问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171232/