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 相关文章推荐
基于jQuery的js分页代码
Jun 10 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
May 03 Javascript
JS弹出窗口代码大全(详细整理)
Dec 21 Javascript
javascript移出节点removeChild()使用介绍
Apr 03 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 Javascript
jquery 插件实现多行文本框[textarea]自动高度
Mar 04 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
Aug 25 Javascript
AngularJS入门教程之静态模板详解
Aug 18 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
简单实现jquery隔行变色
Nov 09 jQuery
javascript实现智能手环时间显示
Sep 18 Javascript
jQuery实现可以计算进制转换的计算器
Oct 19 jQuery
使用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
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
js实现日历的简单算法
2017/01/24 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
2017/03/23 jQuery
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python 调用Java实例详解
2017/06/02 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
numpy.array 操作使用简单总结
2019/11/08 Python
Numpy之reshape()使用详解
2019/12/26 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
详解python中的闭包
2020/09/07 Python
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
天游软件面试
2013/11/23 面试题
长青弘远的面试题
2012/06/09 面试题
软件测试工程师结构化面试题库
2016/11/23 面试题
教师节演讲稿
2014/05/06 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
人事聘任通知
2015/04/21 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
python - asyncio异步编程
2021/04/06 Python