我正在 uiwebview 上加载静态 html 文件,当 webViewDidFinishLoad 时,我插入以下 JavaScript 来获取 div 上包含的数据。
NSString *body = [self.webView1 stringByEvaluatingJavaScriptFromString:
@"document.getElementById('social').innerHTML"];
NSLog(@"received data: %@", body);
一切似乎都工作正常,但有时 div 是空的!假设 div 总是被填充,因为 div 是静态的,我认为 webViewDidFinishLoad 事件在整个页面加载之前被触发,然后 javascript 查找尚未准备好的 div。可能的?如果没有,有什么建议吗?怎么解决呢?谢谢。
最佳答案
是的,我注意到有时 webViewDidFinishLoad 会在您认为应该之前被触发。我记不起具体的细节,但可能是涉及重定向时。
当它被调用时,您可以检查页面是否仍在加载:
if (webView.loading)
return;
或者您可以使用一个 javascript 函数,该函数会在 dom 加载时注册一个事件监听器,并在使用 location.href 技术使用自定义方案触发 webViewShouldStartLoad 时通知您的代码 dom 已完成加载。
关于javascript - iOS uiwebview 在加载整个 html 文件之前触发 finishLoad 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10765552/