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调用Activex控件的事件的实现方法
Apr 11 Javascript
js运动框架_包括图片的淡入淡出效果
May 11 Javascript
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
Js实现无刷新删除内容
Apr 29 Javascript
理解javascript模块化
Mar 28 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
Angular利用trackBy提升性能的方法
Jan 26 Javascript
分析javascript原型及原型链
Mar 18 Javascript
electron中使用bootstrap的示例代码
Nov 06 Javascript
Vue中keep-alive的两种应用方式
Jul 15 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
Sep 24 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
JavaScript效率调优经验
2009/06/04 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
Python记录详细调用堆栈日志的方法
2015/05/05 Python
在Python中使用成员运算符的示例
2015/05/13 Python
Python3处理文件中每个词的方法
2015/05/22 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
详解Python time库的使用
2019/10/10 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
软件工程毕业生自荐信
2014/07/04 职场文书
高中校园广播稿
2014/10/21 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫