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 相关文章推荐
语义化 H1 标签
Jan 14 Javascript
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
js中widow.open()方法使用详解
Jul 30 Javascript
一起学写js Calender日历控件
Apr 14 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 Javascript
React.js中常用的ES6写法总结(推荐)
May 09 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
详解使用Next.js构建服务端渲染应用
Jul 10 Javascript
微信小程序实现登录注册tab切换效果
Dec 29 Javascript
vue项目中使用bpmn为节点添加颜色的方法
Apr 30 Javascript
vue 页面跳转的实现方式
Jan 12 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
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
PDO实现学生管理系统
2020/03/21 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python+pygame实现坦克大战
2019/09/10 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
社区党建工作方案
2014/06/10 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
大学生助学金感谢信
2015/01/21 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB