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 相关文章推荐
js tab效果的实现代码
Dec 26 Javascript
jQuery 学习第五课 Ajax 使用说明
May 17 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
Oct 11 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 Javascript
javascript标准库(js的标准内置对象)总结
May 26 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
vue3.0生命周期的示例代码
Sep 24 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数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
JavaScript中this详解
2015/09/01 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
Python入门教程之if语句的用法
2015/05/14 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
使用tensorflow实现AlexNet
2017/11/20 Python
pandas string转dataframe的方法
2018/04/11 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
什么是类的返射机制
2016/02/06 面试题
竞选班干部演讲稿400字
2014/08/20 职场文书
个人收入证明范本
2014/09/18 职场文书
六年级作文之预言作文
2019/10/25 职场文书
Python中for后接else的语法使用
2021/05/18 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript