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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 Javascript
javascript常用函数(1)
Nov 04 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
Sep 09 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
Sep 27 Javascript
深入学习 JavaScript中的函数调用
Mar 23 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
Aug 15 Javascript
手把手教你使用vue-cli脚手架(图文解析)
Nov 08 Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
Sep 30 Javascript
Node与Python 双向通信的实现代码
Jul 16 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
一个目录遍历函数
2006/10/09 PHP
How do I change MySQL timezone?
2008/03/26 PHP
php不写闭合标签的好处
2014/03/04 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
python3 求约数的实例
2019/12/05 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
python实现批量命名照片
2020/06/18 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
运动会广播稿80字
2014/01/23 职场文书
教师评语大全
2014/04/28 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
单位接收函范文
2015/01/30 职场文书
个人工作保证书
2015/02/28 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
解决xampp安装后Apache无法启动
2022/03/21 Servers
springboot读取resources下文件的方式详解
2022/06/21 Java/Android