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 相关文章推荐
Javascript添加监听与删除监听用法详解
Dec 19 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
jQuery菜单插件superfish使用指南
Apr 21 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
bootstrap提示标签、提示框实现代码
Dec 28 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
浅谈vue 单文件探索
Sep 05 Javascript
node.js微信小程序配置消息推送的实现
Feb 13 Javascript
微信小程序下拉菜单效果的实例代码
May 14 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
Apr 14 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
php array_map()函数实例用法
2021/03/03 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
vue实现分页栏效果
2019/06/28 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python实现将xml导入至excel
2015/11/20 Python
Python itertools.product方法代码实例
2020/03/27 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python调用win32接口进行截图的示例
2020/11/11 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
项目考察欢迎辞
2014/01/17 职场文书
高二历史教学反思
2014/01/25 职场文书
书香校园建设方案
2014/05/02 职场文书
班风口号
2014/06/18 职场文书
职工宿舍管理制度
2015/08/05 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers