JS返回页面时自动回滚到历史浏览位置


Posted in Javascript onSeptember 26, 2018

在我的系统实际开发过程中遇到一个需求,我需要让应用在各个页面间跳转时回到每页原先浏览到的位置,方便用户使用。

在网上查资料时,看到的方案有不少,众说纷纭,但真正给出可行可用代码的寥寥无几,所以我干脆按自己的想法用SessionStorage写了一个缓存页面的方法,在离开页面时将需要缓存的容器中所有内容都存到SessionStorage中,在返回页面时重新加载,方便用户操作,效果如下:

JS返回页面时自动回滚到历史浏览位置

页面缓存

使用方法

用法也很简单,咱一步一步讲。

首先,在你需要缓存标签容器的类名中加入cache,并写一个name作为该容器的唯一标记,示例如下:

<div class="weui-tab cache" name="index">
 ....
</div>

其次,声明全局变量,获取缓存内容和容器,示例如下:

var cache;
var cacheId = $(".cache").attr("name");

随后,在页面加载时调用缓存,在离开页面时生成缓存,代码如下:

window.onload = function () {
 //载入缓存的列表
 loadCache(cacheId);
}

window.onunload = function () {
 //可以通过needCache这个flag来控制是否需要缓存
 if (localStorage.needCache == 'true') {
  //离开页面时生成缓存
  createCache(cacheId);
 }
}

/* *
 * @brief 可对指定多个控件进行内容和位置的缓存
 * @param cacheId 缓存元素的id
 * @return null
 * */
function createCache(cacheId) {
 //对内容进行缓存
 var list = [];
 var listController = $('.cache');
 $.each(listController, function (index, value, array) {
  list.push(value.innerHTML);
 })
 //对浏览到的位置进行缓存
 var top = [];
 var topController = $(".cache").find(".top");
 $.each(topController, function (index, value, array) {
  top.push(value.scrollTop);
 })
 //存入sessionstorage中
 sessionStorage.setItem(cacheId, JSON.stringify({
  list: list,
  top: top
 }));
}

/* *
 * @breif 可对指定多个控件加载缓存
 * @param 加载缓存的id
 * @return null
 * */
function loadCache(cacheId) {
 //一定要放在整个js文件最前面
 cache = sessionStorage.getItem(cacheId);
 if (cache) {
  cache = JSON.parse(cache);
  //还原内容
  var listController = $('.cache');
  $.each(listController, function (index, value, array) {
   value.innerHTML = cache.list[index];
  })
  //还原位置
  var topController = $(".cache").find(".top");
  $.each(topController, function (index, value, array) {
   value.scrollTop = cache.top[index];
  })
 }
}

大部分都可以直接copy,再根据你的需要改进一下,就可以很好的使用了。

github传送地址: https://github.com/JunJieDing666/YouZhiGou

总结

以上所述是小编给大家介绍的JS返回页面时自动回滚到历史浏览位置,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js运动框架_包括图片的淡入淡出效果
May 11 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
Extjs grid panel自带滚动条失效的解决方法
Sep 11 Javascript
JavaScript中的substr()方法使用详解
Jun 06 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
提高Node.js性能的应用技巧分享
Aug 10 Javascript
基于 Vue 的树形选择组件的示例代码
Aug 18 Javascript
JavaScrip数组去重操作实例小结
Jun 20 Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 Javascript
详解vue3中组件的非兼容变更
Mar 03 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
使用weixin-java-tools完成微信授权登录、微信支付的示例
Sep 26 #Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 #Javascript
深入理解react-router 路由的实现原理
Sep 26 #Javascript
node.js使用redis储存session的方法
Sep 26 #Javascript
详解Axios统一错误处理与后置
Sep 26 #Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
Sep 26 #Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 #Javascript
You might like
dedecms系统常用术语汇总
2007/04/03 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
js选择器全面解析
2016/06/27 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
基于python的字节编译详解
2017/09/20 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
Python常用特殊方法实例总结
2019/03/22 Python
python语言的优势是什么
2020/06/17 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
华为慧通面试题
2012/09/11 面试题
上海奥佳笔试题面试题
2016/11/16 面试题
Linux机考试题
2015/07/17 面试题
副科级后备干部考察材料
2014/05/15 职场文书
幼儿园标语大全
2014/06/19 职场文书
上甘岭观后感
2015/06/10 职场文书
单位接收证明格式
2015/06/18 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
「月刊Action」2022年5月号封面公开
2022/03/21 日漫