H5浏览器和webview后退刷新方案

最近一段时间整这个花了很长一段时间,不管是我们这边还是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。

好啦,就这样吧。有啥问题可以留言啊!!!继续搬砖了!!!

你可能感兴趣的:(H5浏览器和webview后退刷新方案)