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 相关文章推荐
javascript与CSS复习(二)
Jun 29 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
JQuery删除DOM节点的方法
Jun 11 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 Javascript
JavaScript中的对象继承关系
Aug 01 Javascript
form+iframe解决跨域上传文件的方法
Nov 18 Javascript
深入理解JavaScript中的尾调用(Tail Call)
Feb 07 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
Apr 04 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
Sep 01 Javascript
vue下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
前端学习——JavaScript原生实现购物车案例
Mar 31 Javascript
JS新手入门数组处理的实用方法汇总
Apr 07 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
PHP获取数组的键与值方法小结
2015/06/13 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
javascript document.images实例
2008/05/27 Javascript
js 深拷贝函数
2008/12/04 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
Python 读取位于包中的数据文件
2020/08/07 Python
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
平安家庭示范户事迹
2014/06/02 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
文明家庭事迹材料
2014/12/20 职场文书
单位考核聘任报告
2015/03/02 职场文书
技能培训通讯稿
2015/07/18 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python