最近一段时间整这个花了很长一段时间,不管是我们这边还是Html那边。各种方法都调试了,最后磕磕碰碰终于找到一种方式。o(╥﹏╥)o
总体的设计思路就是:每回返回的时候去清除UIWebView的缓存(安卓那边是设计缓存的模式nolocalcache具体的自己找)
iOS的代码:
//按钮的响应事件
- (void)back:(UIBarButtonItem*)btn
{
if(self.webView.canGoBack==YES) {
NSURLCache* cache = [NSURLCachesharedURLCache];
//清除UIWebView的缓存
[cacheremoveAllCachedResponses];
//设置硬盘缓存的最大容量
[cachesetDiskCapacity:0];
[cachesetMemoryCapacity:0];
dispatch_async(dispatch_get_main_queue(), ^{
[self.webViewgoBack];
});
}else{
[self.view resignFirstResponder];
[self.navigationController popViewControllerAnimated:YES];
}
}
另外,还有一个小插曲:即便前端这边这样写了,每回重新请求js,但是存在的问题是H5界面第一回不刷新,之后会一直刷新。这是个大坑!!!!
解决的方案是 :html那边利用ajax请求数据的时候 ,添加上$.ajax({
async:false, //这句话 异步关闭
//******其他代码
});
因为ajax默认是异步执行的,也就是并没有等待请求完毕就开始执行下一行js语句了,导致赋值为null。
好啦,就这样吧。有啥问题可以留言啊!!!继续搬砖了!!!