javascript - iOS uiwebview 在加载整个 html 文件之前触发 finishLoad 事件

标签 javascript iphone objective-c ios xcode

我正在 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/

相关文章:

iphone - 是否有快捷键可以使 ImageView 尺寸适合 .png?

ios - iPad 多任务支持需要这些方向

ios - 使用 NSOperationQueue,如何添加到后台队列而不是主队列,以及如何控制操作量?

javascript - 如何使用 javascript 使 div 在鼠标悬停时移动?

javascript - jQuery 选择动态添加的表格行的 col-data

javascript - 如何使用jquery组合两个字段以在下拉菜单中显示为选项?

ios - 如何将这个 objective-c 转换为 swift

javascript - Angular $http 错误回调响应始终未定义

iphone - 从 CLLocationManager 授权警报中检测按钮按下

c# - 从跨平台 DLL 返回整数数组