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 相关文章推荐
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
May 25 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
Mar 01 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
JSON+Jquery省市区三级联动
Jan 13 Javascript
JQuery Ajax WebService传递参数的简单实例
Nov 02 Javascript
javascript数据类型详解
Feb 07 Javascript
关于自定义Egg.js的请求级别日志详解
Dec 12 Javascript
详解js创建对象的几种方法及继承
Apr 12 Javascript
vue2 中二级路由高亮问题及配置方法
Jun 10 Javascript
JS正则表达式常见函数与用法小结
Apr 13 Javascript
JS highcharts实现动态曲线代码示例
Oct 16 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 microtime获取浮点的时间戳
2010/02/21 PHP
PHP 函数学习简单小结
2010/07/08 PHP
PHP 命名空间实例说明
2011/01/27 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
JavaScript 学习初步 入门教程
2010/03/25 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
2016/11/09 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
python config文件的读写操作示例
2019/09/27 Python
pytorch 求网络模型参数实例
2019/12/30 Python
python 错误处理 assert详解
2020/04/20 Python
用python绘制樱花树
2020/10/09 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
《阳光》教学反思
2014/02/23 职场文书
演讲比赛策划方案
2014/06/11 职场文书
个人向公司借款协议书
2014/10/09 职场文书
呐喊读书笔记
2015/06/30 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
Django实现翻页的示例代码
2021/05/24 Python
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
详解Vue slot插槽
2021/11/20 Vue.js