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的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
Dec 06 Javascript
JavaScript 事件对象的实现
Jul 13 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
Javascript学习笔记一 之 数据类型
Dec 15 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
JQuery工具函数汇总
Jun 15 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
Feb 17 Javascript
element-ui 表格数据时间格式化的方法
Aug 24 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 Javascript
js实现3D旋转相册
Aug 02 Javascript
原生js实现分页效果
Sep 23 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
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP静态文件生成类实例
2014/11/29 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
python获取文件扩展名的方法
2015/07/06 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
彻底理解Python中的yield关键字
2019/04/01 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
通过实例了解python property属性
2019/11/01 Python
python flask搭建web应用教程
2019/11/19 Python
美国在线家具网站:GDFStudio
2021/03/13 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
最新销售员个人自荐信
2013/09/21 职场文书
本科生个人求职自荐信
2013/09/26 职场文书
中专毕业生自我鉴定范文
2013/11/09 职场文书
文员岗位职责
2013/11/09 职场文书
英语生日邀请函
2014/01/23 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
2014年财政局工作总结
2014/12/09 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书