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中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
Sep 14 Javascript
JavaScript中var关键字的使用详解
Aug 14 Javascript
谈谈JavaScript自定义回调函数
Oct 18 Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
May 13 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
JS字典Dictionary类定义与用法示例
Feb 01 Javascript
JS面向对象之多选框实现
Jan 17 Javascript
Vuejs通过拖动改变元素宽度实现自适应
Sep 02 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读取xml方法介绍
2013/01/12 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python 深度学习中的4种激活函数
2020/09/18 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
机械制造专业个人的自我评价
2013/12/28 职场文书
公司股权转让协议书
2014/04/12 职场文书
主持人演讲稿
2014/05/13 职场文书
服务整改报告
2014/11/06 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
2015年招生工作总结
2015/05/04 职场文书
追悼会答谢词范文
2015/09/29 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
mysql序号rownum行号实现方式
2022/12/24 MySQL