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 FF OPERA都可用的弹出层实现代码
Sep 29 Javascript
JQuery中html()方法使用不当带来的陷阱
Apr 07 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
Jun 30 Javascript
用javascript读取xml文件读取节点数据
Aug 12 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
Bootstrap响应式侧边栏改进版
Sep 17 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
Node.js开启Https的实践详解
Oct 25 Javascript
详解vue中v-on事件监听指令的基本用法
Jul 22 Javascript
vue使用video插件vue-video-player详解
Oct 23 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制作简单的内容采集器的原理分析
2008/10/01 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php中chdir()函数用法实例
2014/11/13 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
php实现用户登陆简单实例
2017/04/04 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
js实现轮播图特效
2020/05/28 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
python通过文件头判断文件类型
2015/10/30 Python
Python实现的弹球小游戏示例
2017/08/01 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
写好自荐信的几个要点
2013/12/26 职场文书
上课迟到检讨书
2014/01/19 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年环保局工作总结
2015/05/22 职场文书
小学六年级毕业感言
2015/07/30 职场文书
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers