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 相关文章推荐
Javascript 获取链接(url)参数的方法[正则与截取字符串]
Feb 09 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
Dec 17 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
js获取通过ajax返回的map型的JSONArray的方法
Jan 09 Javascript
jQuery中remove()方法用法实例
Dec 25 Javascript
angular简介和其特点介绍
Jan 29 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
微信小程序 登录实例详解
Jan 16 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
Dec 29 Javascript
微信小程序WebSocket实现聊天对话功能
Jul 06 Javascript
vue按需加载实例详解
Sep 06 Javascript
使用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
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
PHP微信API接口类
2016/08/22 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
python实现多进程代码示例
2018/10/31 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
新闻编辑自荐书范文
2014/02/12 职场文书
旅游安全协议书
2014/04/21 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
药店采购员岗位职责
2014/09/30 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技