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操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
百度地图自定义控件分享
Mar 04 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
angular中实现控制器之间传递参数的方式
Apr 24 Javascript
Vue-cli中为单独页面设置背景色的实现方法
Feb 11 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
Nov 09 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
Jul 15 Javascript
微信小程序 根据不同用户切换不同TabBar
Apr 21 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 error_log 函数的使用
2009/04/13 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
PHP实现懒加载的方法
2015/03/07 PHP
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
在小程序中使用canvas的方法示例
2018/09/17 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
Python语言的面相对象编程方式初步学习
2016/03/12 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
python实现textrank关键词提取
2018/06/22 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
django 控制页面跳转的例子
2019/08/06 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
python实现随机加减法生成器
2020/02/24 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
给儿子的表扬信
2014/01/15 职场文书
入党自荐书范文
2014/03/09 职场文书
优秀语文教师事迹
2014/05/18 职场文书
汽车转让协议书
2015/01/29 职场文书
2016入党心得体会范文
2016/01/06 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang