JS实现刷新网页后之前浏览位置保持不变示例详解


Posted in Javascript onAugust 14, 2022

正文

在京东上浏览的时候,发现了一个比较人性化的小功能,浏览商品,浏览到一半的时候,如下图所示:

JS实现刷新网页后之前浏览位置保持不变示例详解

我重新加载网页,刷新之后,滚动条依然定位在我刚刚浏览的位置,这个小功能感觉还不错,挺方便的。

具体是怎么实现的呢,去网上大概查了一下。

这个是使用滚动条属性scrollTop来实现的。

基本实现流程:滚动条移动的时候,将滚动条实时的位置存入Cookie或者localstorage中,但是一些老旧的浏览器版本对localstorage支持不是特别友好。

如果你想使用localstorage来实现,请参照《VUE自学笔记之使用localstorage和sessionstorage实现登录》

我这里使用的是cookie来存储。

这里有两个方法

方法一:这个比较集中

/**
 * @name: 控制 浏览器滚动条
 * @author: camellia
 * @email: guanchao_gc@qq.com
 * @date: 2022-01-10 
 */
window.onscroll = function() {
        var scrollPos;
        if (typeof window.pageYOffset != 'undefined') {
            scrollPos = window.pageYOffset;
        }
        else if (typeof document.body != 'undefined') {
            scrollPos = document.body.scrollTop;
        }
        document.cookie = "scrollTop=" + scrollPos; 
    }
    window.onload = function (){
        if (document.cookie.match(/scrollTop=([^;]+)(;|$)/) != null) {
            var arr = document.cookie.match(/scrollTop=([^;]+)(;|$)/); 
            document.body.scrollTop = parseInt(arr[1]); 
        }
    }

方法二:cookie存取各封装成函数

这个将cookie的存取各封装成了一个函数,调用更灵活。

window.onscroll = function() {
        var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
        SetCookie("a", scrollTop);
    }
    window.onload = function () {
        document.body.scrollTop = GetCookie("a");//页面加载时设置scrolltop高度
    }
    /**
     * @name: 设置cookie
     * @author: camellia
     * @email: guanchao_gc@qq.com
     * @date: 2022-01-10 
     */
    function SetCookie(sName, sValue) {
        document.cookie = sName + "=" + escape(sValue) + "; ";
    }
    /**
     * @name: 读取cookie
     * @author: camellia
     * @email: guanchao_gc@qq.com
     * @date: 2022-01-10 
     */
    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;
    }

其实这个就是一个对cookie存储和取值以及scrollTop赋值的一个过程,不是很难。

上边的两段代码,一般情况下,只要放到你的项目里边就能好用。

如果不好用,请重新检查一下,你的项目中是否还有别的地方对scrollTop赋值。

以上就是JS实现刷新网页后之前浏览位置保持不变示例详解的详细内容,更多关于JS刷新网页浏览位置保持的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
IE中直接运行显示当前网页中的图片 推荐
Aug 31 Javascript
侧栏跟随滚动的简单实现代码
Mar 18 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
js读取json的两种常用方法示例介绍
Oct 19 Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 Javascript
原生JS实现旋转木马式图片轮播插件
Apr 25 Javascript
详解vee-validate的使用个人小结
Jun 07 Javascript
node.js实现的装饰者模式示例
Sep 06 Javascript
Vue动态组件和异步组件原理详解
May 06 Javascript
JS数组方法slice()用法实例分析
Jan 18 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
Aug 03 Javascript
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 #Vue.js
Vue深入理解插槽slot的使用
Aug 05 #Vue.js
React如何使用axios请求数据并把数据渲染到组件
Aug 05 #Javascript
使用JS前端技术实现静态图片局部流动效果
Aug 05 #Javascript
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 #Javascript
react中useState使用:如何实现在当前表格直接更改数据
Aug 05 #Javascript
pnpm对npm及yarn降维打击详解
Aug 05 #Javascript
You might like
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
使用svg实现动态时钟效果
2018/07/17 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
js常见遍历操作小结
2019/06/06 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python实现2048小游戏
2015/03/30 Python
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
python3.5安装python3-tk详解
2019/04/26 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
Django如何使用redis作为缓存
2020/05/21 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
同意迁入证明模板
2014/10/26 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js