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 相关文章推荐
Dojo 学习要点
Sep 03 Javascript
javascript中判断一个值是否在数组中并没有直接使用
Dec 17 Javascript
js判断字符长度以及中英文数字等
Dec 31 Javascript
js动态添加表格数据使用insertRow和insertCell实现
May 22 Javascript
利用JS做网页特效_大图轮播(实例讲解)
Aug 09 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
vue使用laydate时间插件的方法
Nov 14 Javascript
微信小程序 弹窗输入组件的实现解析
Aug 12 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
Sep 30 Javascript
JQuery获得内容和属性方法解析
May 30 jQuery
JavaScript编写开发动态时钟
Jul 29 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 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
yii权限控制的方法(三种方法)
2015/12/28 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
JS检测浏览器开发者工具是否打开的方法详解
2020/10/02 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
python生成n个元素的全组合方法
2018/11/13 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
pytorch实现线性拟合方式
2020/01/15 Python
Python模块future用法原理详解
2020/01/20 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
员工薪酬激励方案
2014/06/13 职场文书
2014年行政工作总结
2014/11/19 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript