最近项目反馈 有些手机 的 UIWebView 偶尔会显示白屏,抓包显示 response code 是304。查看代码,发现 loadRequest 的时候没有用缓存,然后也不能复现,一番搜索后,找到解决方案 参考这里。
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
DELog(@" webViewDidFinishLoad request %@ ",webView.request);
// 判断 请求不超过 3次
if ([webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"].length < 1 && self.blankPageCount < 3)
{// 空白页
++self.blankPageCount;
DELog(@"Reconstructing request... %@",self.lastRequest);
NSString *uniqueURL = [NSString stringWithFormat:@"%@?t=%@", self.lastRequest.URL, [[NSProcessInfo processInfo] globallyUniqueString]];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:uniqueURL] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0]];
} else {
self.blankPageCount = 0;
}
}