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 相关文章推荐
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
Oct 10 Javascript
vue.js表格分页示例
Oct 18 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
Jan 06 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 Javascript
基于canvas的二维码邀请函生成插件
Feb 14 Javascript
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
关于vue面试题汇总
Mar 20 Javascript
详解小程序用户登录状态检查与更新实例
May 15 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
vue 实现setInterval 创建和销毁实例
Jul 21 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
PHP 强制下载文件代码
2010/10/24 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
Python实现二分法算法实例
2015/02/02 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
python实现AES加密和解密
2019/03/27 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
Yahoo-PHP面试题2
2014/12/06 面试题
自我鉴定思想方面
2013/10/07 职场文书
出纳员的岗位职责
2014/02/22 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
作风整顿个人剖析材料
2014/10/06 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
谢师宴家长致辞
2015/07/27 职场文书
python实现监听键盘
2021/04/26 Python
Django使用echarts进行可视化展示的实践
2021/06/10 Python
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle