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 相关文章推荐
使用prototype.js进行异步操作
Feb 07 Javascript
Stop SQL Server
Jun 21 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
Sep 29 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
js实现点击添加一个input节点
Dec 05 Javascript
jquery实现的淡入淡出下拉菜单效果
Aug 25 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
vue loadmore 组件滑动加载更多源码解析
Jul 19 Javascript
Angular项目如何升级至Angular6步骤全纪录
Sep 03 Javascript
Vue可自定义tab组件用法实例
Oct 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
js获取内联样式的方法
2015/01/27 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
vue实现图片上传功能
2020/05/28 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
粗略分析Python中的内存泄漏
2015/04/23 Python
python实现猜单词小游戏
2020/05/22 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python实现代码统计工具
2019/09/19 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python Paramiko使用示例
2020/09/21 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
重构Python代码的六个实例
2020/11/25 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
Java如何调用外部Exe程序
2015/07/04 面试题
行政经理的岗位职责
2013/11/23 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
开会通知短信大全
2015/04/20 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers