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统计用户下载网页所需时间的脚本
Oct 15 Javascript
Bootstrap每天必学之面板
Nov 30 Javascript
深入理解JavaScript单体内置对象
Jun 06 Javascript
利用Angularjs和Bootstrap前端开发案例实战
Aug 27 Javascript
js注入 黑客之路必备!
Sep 14 Javascript
微信小程序 rpx 尺寸单位详细介绍
Oct 13 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
利用JS hash制作单页Web应用的方法详解
Oct 10 Javascript
vue+vue-router转场动画的实例代码
Sep 01 Javascript
ES6 对象的新功能与解构赋值介绍
Feb 05 Javascript
javascript实现贪吃蛇小练习
Jul 05 Javascript
ant design vue中表格指定格式渲染方式
Oct 28 Javascript
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
漂亮但不安全的CTB
2006/10/09 PHP
MVC模式的PHP实现
2006/10/09 PHP
解析PHP的session过期设置
2013/06/29 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python 常用string函数详解
2016/05/30 Python
Python中字典和集合学习小结
2017/07/07 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
python机器人运动范围问题的解答
2019/04/29 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
应届护士推荐信
2013/11/16 职场文书
第二课堂活动总结
2014/05/07 职场文书
2014年项目工作总结
2014/11/24 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
实习工作表现评语
2014/12/31 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
求职信如何撰写?
2019/05/22 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android