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 相关文章推荐
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
javascript常用函数归纳整理
Oct 31 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
Dec 15 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
Jan 29 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
Angular2 路由问题修复详解
Mar 01 Javascript
Vue2 配置 Axios api 接口调用文件的方法
Nov 13 Javascript
微信小程序网络封装(简单高效)
Aug 06 Javascript
js实现select下拉框选择
Jan 11 Javascript
微信小程序文章列表功能完整实例
Jun 03 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 开发工具
2006/12/06 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
python分布式环境下的限流器的示例
2017/10/26 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
一文读懂Python 枚举
2020/08/25 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
教师专业自荐书范文
2014/02/10 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
作风建设演讲稿
2014/05/23 职场文书
文明单位汇报材料
2014/12/24 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
2016春节慰问信范文
2015/03/25 职场文书
干部考核工作总结
2015/08/12 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书