vue 移动端记录页面浏览位置的方法


Posted in Javascript onMarch 11, 2020

记录一下本次项目我使用的方法,有更简单便捷的方法,欢迎交流

描述: 假设有a b c 页面

  1. 从a页面 到 b页面 ,b页面到c页面
  2. b到c页面的时候需要记录当前b的浏览位置,c返回到b的时候滚动到上次浏览的位置
  3. b在返回a的时候,在从a进入b 返回的是b的顶部(也就是不记录浏览位置)

做法: 使用到了vuex ,beforeRouteLeave

1.首先在vuex中state定义一个变量来记录当前的浏览的位置

//state中定义数据
 state: {
  carrerTouScroll: {
   height: '' //滚动的距离
   }
  }
 
 
 //mutations 操作state数据
 mutations: {
  setCarrerTouScroll (state, disdance) { //管理赛事 滚动距离
   state.carrerTouScroll.height = disdance
  },
 }
 
 
 //使用getters 有的不加这句也可以,但是有时候不加就不行,所以还是加上吧
  getters: {
   getCarrerTou: state => state.carrerTouScroll 
   }

2.在需要的页面中 我使用了beforeRouteLeave 来记录没有路由离开的时候当前浏览的位置

beforeRouteLeave (to, from, next) { // 离开路由前
  let that = this
  if (to.meta.touFlag) {
   let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
   this.$store.commit('setCarrerTouScroll', scrollTop)
  } else {
   this.$store.commit('setCarrerTouScroll', 0)
  }
  next()
 },

其中to.meta.touFlag 是我自己定义的,因为需要记录的页面很多,我觉的这样比较方便,只需要在route 页面加一个参数就好了

{
  path: '/careerAddMainTeam',
  name: 'CareerAddMainTeam',
  component: CareerAddMainTeam,
  meta: {
   touFlag: true
  }
 },

当然你也可以使用to.name ,如果需要跳转页面不多的话

beforeRouteLeave (to, from, next) { // 离开路由前
  let that = this
  if (to.name === 'CareerAddMainTeam') {
   let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
   this.$store.commit('setCarrerTouScroll', scrollTop)
  } else {
   this.$store.commit('setCarrerTouScroll', 0)
  }
  next()
 },

3.最后一步就是在每次b页面获取完数据的时候使用$nextTick,让页面恢复到上次浏览的位置

this.$nextTick(() => {
      this.scrollTop = this.$store.state.carrerTouScroll.height
      document.documentElement.scrollTop = this.scrollTop
     })

一定要在b页面获取完数据后使用nextTick,不然是没有效果的

这次就记录到这,如果有别的好方法,请指出

到此这篇关于vue 移动端记录页面浏览位置的方法的文章就介绍到这了,更多相关vue 移动端页面浏览位置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
JavaScript的事件机制详解
Jan 17 Javascript
jQuery基于Ajax方式提交表单功能示例
Feb 10 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 Javascript
JavaScript实现二维坐标点排序效果
Jul 18 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
Jun 19 Javascript
JavaScript 异步调用
Oct 25 Javascript
Node绑定全局TraceID的实现方法
Nov 14 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 #Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
Mar 10 #Javascript
jquery实现烟花效果(面向对象)
Mar 10 #jQuery
非常漂亮的js烟花效果
Mar 10 #Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 #Javascript
微信小程序实现搜索功能
Mar 10 #Javascript
原生JS实现烟花效果
Mar 10 #Javascript
You might like
星际中的相关伤害
2020/03/04 星际争霸
php语言注释,单行注释和多行注释
2018/01/21 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
学校后勤人员职责
2013/12/27 职场文书
绩效管理实施方案
2014/03/19 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
2014年党委工作总结
2014/11/22 职场文书
作文评语怎么写
2014/12/25 职场文书
工程部岗位职责
2015/02/10 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
500字作文之周记
2019/12/13 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技