ios中webview的DidFinishLoad就是成功吗?

我们在应用中经常会用到webview可以有时候我们需要在加载完成后去处理一些其他的问题,常常事与愿违。因为我们调用webview的代理方法- (void)webViewDidFinishLoad:(UIWebView *)webView 可是这个方法是真的加载完成吗?其实不然,这个方法的描述其实是访问到了web的地址资源调用已经完成,但是不代表内容已经加载完成。所以这个时候我们应该首先去调用webView.isLoading 确认资源在loading中,然后使用拦截js代码
NSString *readyState = [webView stringByEvaluatingJavaScriptFromString:@"document.readyState"];
BOOL complete = [readyState isEqualToString:@"complete"];
这个complete才是真正资源加载完成 ,如此便可以顺利的判断资源加载完成后的方法了。
关于这个字段共有5种状态:
1、uninitialized : 还没开始加载
2、loading : 加载中
3、loaded : 加载完成
4、interactive : 结束渲染,用户已经可以与网页进行交互。但内嵌资源还在加载中
5、complete : 完全加载完成

你可能感兴趣的:(ios中webview的DidFinishLoad就是成功吗?)