ios - UIWebView FinishLoad/检测问题

标签 ios swift uiwebview uiwebviewdelegate

使用 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/

相关文章:

iphone - 我怎样才能得到一个id类型属于哪个类型

ios - 带有 Segue 的 UISearchbar (UISearchResultsUpdating) 不会关闭

iphone - 使用带有 loadHTMLString/loadData 的 UIWebView 会破坏后退和前进按钮,解决方法吗?

javascript - UIWebView 下载它的图片内容

ios - UIWebView 不显示 HTML

ios - 通知 CloudKit 可用性

ios - 带有不安全构建标志 : target integrity error 的 Swift 包依赖项

ios - Dispatch.main.async 节中的行数无效

ios - Firebase runTransactionBlock 错误 maxretry

ios - 从 map View 缩小 UI 测试不起作用