2

我在 uiwebview 上加载静态 html 文件,当 webViewDidFinishLoad 时,我插入以下 javascript 以获取 div 中包含的数据。

NSString *body = [self.webView1 stringByEvaluatingJavaScriptFromString:
                              @"document.getElementById('social').innerHTML"];

NSLog(@"received data: %@", body);

一切似乎都正常工作,但有时 div 是空的!假设 div 总是被填充,因为 div 是静态的,我认为 webViewDidFinishLoad 事件在整个页面加载之前被触发,然后 javascript 会查找尚未准备好的 div。可能的?如果没有,有什么建议吗?如何解决?谢谢你。

4

1 回答 1

2

是的,我注意到有时 webViewDidFinishLoad 在你认为它应该被解雇之前就被解雇了。我不记得我脑海中的细节,但可能是涉及重定向的时候。

当它被调用时,您可以检查页面是否仍在加载:

if (webView.loading)
    return;

或者你可以使用一个javascript函数来注册一个事件监听器,当dom已经加载,当它使用location.href技术触发你的webViewShouldStartLoad时,使用自定义方案来通知你的代码dom已经完成加载。

于 2012-05-26T22:19:23.107 回答