gpt4 book ai didi

ios - 如何检测 UIWebView 上的 DOM 加载事件?

转载 作者:行者123 更新时间:2023-11-29 02:19:08 25 4
gpt4 key购买 nike

我有一个图片较多的网页,我正在通过 UIWebView 加载它。我在 webviewdidstartLoad 上显示微调器并在 webviewdidfinishLoad 上关闭。

它工作正常,但问题是,在加载页面上的所有图像之前,不会调用 webviewdidfinishLoad。

有没有一种方法可以检测 DOM 就绪事件,以便我可以在加载完所有 DOM 元素后立即关闭微调器?等待所有图像需要太多时间..

最佳答案

操作简单。但是 - 我知道这并没有具体回答问题 - 首先是使用 WKWebView 而不是 UIWebView

然后,在属性之一上设置 KVO,estimatedProgress:

override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject: AnyObject], context: UnsafeMutablePointer<Void>) {
if keyPath == "estimatedProgress"
{
if let webView = object as? WKWebView
{
webView.evaluateJavaScript("document.readyState == \"interactive\"", completionHandler:{ (isLoaded:AnyObject!, error:NSError!) -> () in
if let l = isLoaded as? Bool where l
{
println("Loaded!")
}
}
}
}

看看这些关于 readyState 的答案:

How to detect if DOMContentLoaded was fired

Javascript - How to detect if document has loaded (IE 7/Firefox 3)

因为我们正在使用 Safari,或者更确切地说是 WebKit - 与 Safari 相同的引擎 - 上面的 Swift 代码运行 JavaScript 评估:

document.readyState == "交互式"

这一行;

if let l = isLoaded as? Bool where l

可选地将生成的可选类型转换为 Bool,并在打印出“Loaded!”之前检查它是否为真。到控制台。

关于ios - 如何检测 UIWebView 上的 DOM 加载事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com