解决微信浏览器回退刷掉ajax数据
来源:互联网 发布:iphone6虚拟定位软件 编辑:程序博客网 时间:2024/06/06 08:41
这样一个场景:我们在微信浏览一个列表,列表的数据下拉通过ajax加载数据,绑定在后面,当点击某一选项时,跳到详细信息页面,返回列表页是发现,通过ajax加载出来的数据被刷掉了。那怎么解决这个问题呢?想了许久,可以用两个方法解决。使用cookie 和history解决。这里介绍的是cookie解决这个问题。history看下一篇。
思路:在跳转详细页的时候,用cookie记录下ajax加载出来的数据,直接把列表通过字符串的形式保存到cookie里面,并且记录当前列表页的位置;当从详细页回退到列表页,就把cookie中的数据取出来,并且滚到记录的位置。
1、要用cookie记录数据,首先需要写个操作cookie的方法(可以弄成一个js文件,这样也方便以后使用):
//写cookies function setCookie(days, name, value) { var exp = new Date(); exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + "; path=/"; } //读取cookies function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return unescape(arr[2]); else return null; } //删除cookies function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(name); if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + "; path=/"; }
<script type="text/javascript">//声明当前列表页面距离顶部的高度 var temscrolltop = 0; var str = "ProjectListscrollTop";//定义距离顶部的高度存储Cookie的名字 //获取保存好的Ajax加载的数据,如果不存在,赋值为空 var ProjectListAjaxData = sessionStorage.getItem("ProjectListAjaxData"); if (ProjectListAjaxData == null) { ProjectListAjaxData = ""; } $(document).ready(function () { //判断是否是从详细页面返回 if ($.cookie("ProjectListPosition")) { //使用完马上删除 delCookie("ProjectListPosition"); //页面回跳插入ajax加载 data if (ProjectListAjaxData != null && ProjectListAjaxData != "") { $("#productlist").append(ProjectListAjaxData); //把cookie数据放进列表 //lazyload(); } else { ProjectListAjaxData = ""; } //页面回跳跳转的位置 if ($.cookie(str)) { $("#content").animate({ scrollTop: $.cookie(str) }, 0); } else { } } else { delCookie("ProjectListPosition"); delCookie("ProjectListscrollTop"); //清除缓存页面数据session ProjectListAjaxData = ""; sessionStorage.removeItem("ProjectListAjaxData"); } }); //页面滚动获取滚动条距离顶部的距离 window.onscroll = function() { temscrolltop = window.scrollY; //console.info(window.scrollY); } </script>
3、在跳转详细页面的时候记录当前位置,也就是写在跳转的函数里面:
$.cookie(str, temscrolltop, { path: '/' }); //cookie记录滚动位置
4、在详细页面写入一下代码,用于标记是详细页面,在回退后列表页就可以根据该标记判断,从而加载存储在cookie里面的数据。
setCookie(1,"ProjectListPosition",true); function setCookie(days, name, value) { var exp = new Date(); exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + "; path=/"; }
完成以上4步即可
阅读全文
0 0
- 解决微信浏览器回退刷掉ajax数据
- 微信浏览器返回无法解决
- 解决html在微信浏览器无法调用图片浏览器
- 模拟微信浏览器抓取数据
- ajax 浏览器支持解决
- 解决某些服务器只允许微信自带浏览器
- 解决微信浏览器禁止链接跳转到iTunes
- 微信浏览器不支持打开App Store 页面的解决
- 解决微信内置浏览器的缓存问题
- 解决微信浏览器无法使用reload()刷新页面
- 解决微信浏览器video全屏的问题
- 解决苹果微信浏览器下拉回弹效果
- Ajax解决IE浏览器兼容问题
- 微信公众号发送ajax,微信ajax post提交数据与服务器通信
- 解决部分浏览器ajax提交数据,数据已改变,却后台数据接收数据还是上一次值的问题
- 微信浏览器页面js刷新页面代码,解决微信jquery无法刷新问题
- 解决UC浏览器、微信浏览器使用display:flex;的兼容性问题
- 解决UC浏览器、微信浏览器使用display:flex;的兼容性问题
- java贪吃蛇小游戏源代码swing
- mysqld install报错:Install/Remove of the Service Denied
- 1055. 集体照 (25)
- 面试之反射机制的一般步骤
- 获取对象操作
- 解决微信浏览器回退刷掉ajax数据
- 32位操作系统能用到的RAM
- 异常处理
- Android全面&详细的Webview使用攻略
- ThinkPHP框架知识的注意点
- 没看完这个就别说你会用信用卡!
- 知易行难
- JavaScript笔记
- 针对edittex添加图标,对非图标区域点击事件处理