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中的Array对象使用说明
Jan 17 Javascript
javascript屏蔽右键代码
May 15 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
js获取隐藏元素宽高的实现方法
May 19 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
Sep 23 Javascript
weUI应用之JS常用信息提示弹层的封装
Nov 21 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
Apr 01 jQuery
Vue 中mixin 的用法详解
Apr 23 Javascript
微信小程序获取音频时长与实时获取播放进度问题
Aug 28 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 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脚本的10个技巧(7)
2006/10/09 PHP
php a simple smtp class
2007/11/26 PHP
php 远程关机操作的代码
2008/12/05 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
JavaScript对象模型-执行模型
2008/04/28 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
python语言基本语句用法总结
2019/06/11 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
上海中网科技笔试题
2012/02/19 面试题
会计电算化学生个人的自我评价
2014/02/08 职场文书
优秀员工评语
2014/02/10 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
机关职员工作检讨书
2014/10/23 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js