js实现刷新页面后回到记录时滚动条的位置【两种方案可选】


Posted in Javascript onDecember 12, 2016

当div中绑定数据,给它一个属性overflow-y: scroll,添加长度大小,使其能够出现滚动条;每次刷新的时候滚动条总是会出现在最上方,这使我很头疼,经过查阅网上资料,返现两种方法可行。如下:

第一种方案

将上一个页面的div的scrolltop距离长度记录在cookie中,然后通过js调整刷新页面时的长度记录,代码如下:

js代码:

<script>
  var _h = 0;
  function SetH(o) {
   _h = o.scrollTop
   SetCookie("a", _h)
  }
  window.onload = function () {
   document.getElementById("x").scrollTop = GetCookie("a");//页面加载时设置scrolltop高度
  }
  function SetCookie(sName, sValue) {
   document.cookie = sName + "=" + escape(sValue) + "; ";
  }
  function GetCookie(sName) {
   var aCookie = document.cookie.split("; ");
   for (var i = 0; i < aCookie.length; i++) {
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0])
     return unescape(aCrumb[1]);
   }
   return 0;
  }
 </script>

html中代码如下:

<div id="x" style="height: 200px; overflow: scroll" onscroll="SetH(this)">
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
   <p>1</p>
</div>

第二种方案

1.通过div的onscroll事件记录滚动条的scrollTop值,设置到document.cookie

2.页面加载时再读取document.cookie的值,设置给div的scrollTop

js代码实现:

<script type="text/javascript">
  function KeepScrollBar() {
   var scrollPos;
   if (typeof window.pageYOffset != 'undefined') {
    scrollPos = window.pageYOffset;
   }
   else if (typeof document.body != 'undefined') {
    scrollPos = document.getElementById('divContent').scrollTop;
   }
   document.cookie = "scrollTop=" + scrollPos; 
  }
  window.onload = function (){
   if (document.cookie.match(/scrollTop=([^;]+)(;|$)/) != null) {
    var arr = document.cookie.match(/scrollTop=([^;]+)(;|$)/); 
    document.getElementById('divContent').scrollTop = parseInt(arr[1]); 
   }
  }
</script>

html:

<div class="content" data-role="tab-content" data-id="course-a" runat="server" id="divContent" style="height: 365px; overflow-y: scroll" onscroll= "KeepScrollBar()">
    <p>   1</p>   
    <p>   2</p>   
    <p>   3</p>   
    <p>   4</p>   
    <p>   5</p>   
    <p>   6</p>   
    <p>   7</p>   
    <p>   8</p>   
    <p>   9</p>   
    <p>   10</p>   
    <p>   11</p>   
    <p>   12</p>   
    <p>   13</p>   
    <p>   14</p>   
    <p>   15</p>   
    <p>   16</p> 
</div>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
js对象数组按属性快速排序
Jan 31 Javascript
jquery操作select大全
Apr 25 Javascript
Jquery跳到页面指定位置的方法
May 12 Javascript
Ext GridPanel加载完数据后进行操作示例代码
Jun 17 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
Sep 26 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
详解基于javascript实现的苹果系统底部菜单
Dec 02 Javascript
详解javascript获取url信息的常见方法
Dec 19 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
layui 设置table 行的高度方法
Aug 17 Javascript
vue.js实现图书管理功能
Sep 24 Javascript
一篇文章学会Vue中间件管道
Jun 20 Vue.js
jquery利用json实现页面之间传值的实例解析
Dec 12 #Javascript
多种方式实现js图片预览
Dec 12 #Javascript
JavaScript实现多栏目切换效果
Dec 12 #Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 #Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
Dec 12 #Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 #Javascript
AngularJS封装指令方法详解
Dec 12 #Javascript
You might like
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python2.7 json 转换日期的处理的示例
2018/03/07 Python
Python实现快速排序的方法详解
2019/10/25 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Python如何进行时间处理
2020/08/06 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
财务会计专业个人求职信范本
2014/01/08 职场文书
北京大学自荐信范文
2014/01/28 职场文书
师说教学反思
2014/02/07 职场文书
给校长的建议书
2014/03/12 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android