iOS uiwebview 在加载整个 html 文件之前触发了 finishLoad 事件
Posted
技术标签:
【中文标题】iOS uiwebview 在加载整个 html 文件之前触发了 finishLoad 事件【英文标题】:iOS uiwebview is firing finishLoad event before load whole html file 【发布时间】:2012-05-26 10:46:40 【问题描述】:我在 uiwebview 上加载静态 html 文件,当 webViewDidFinishLoad 时,我插入以下 javascript 以获取 div 中包含的数据。
NSString *body = [self.webView1 stringByEvaluatingJavaScriptFromString:
@"document.getElementById('social').innerHTML"];
NSLog(@"received data: %@", body);
似乎一切正常,但有时 div 是空的!假设 div 总是被填充,因为 div 是静态的,我认为 webViewDidFinishLoad 事件在整个页面加载之前被触发,然后 javascript 会查找尚未准备好的 div。可能的?如果没有,有什么建议吗?如何解决?谢谢。
【问题讨论】:
【参考方案1】:是的,我注意到有时 webViewDidFinishLoad 会在您认为它应该被触发之前被触发。我不记得我脑海中的细节,但可能是涉及重定向的时候。
当它被调用时,您可以检查页面是否仍在加载:
if (webView.loading)
return;
或者你可以使用一个 javascript 函数来注册一个事件监听器,当 dom 加载时,当它使用 location.href 技术触发你的 webViewShouldStartLoad 时,使用自定义方案来通知你的代码 dom 已经完成加载。
【讨论】:
感谢您的回答。当出现空值时,Webview.loading 也会返回 false!测试第二个选项...以上是关于iOS uiwebview 在加载整个 html 文件之前触发了 finishLoad 事件的主要内容,如果未能解决你的问题,请参考以下文章