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 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
Javascript学习笔记1 数据类型
Jan 11 Javascript
javascript中自定义对象的属性方法分享
Jul 12 Javascript
js 金额格式化来回转换示例
Feb 23 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
拥Bootstrap入怀——导航栏篇
May 30 Javascript
js对字符串进行编码的方法总结(推荐)
Nov 10 Javascript
基于angular实现三级联动的生日插件
May 12 Javascript
React Native中Navigator的使用方法示例
Oct 13 Javascript
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
Jul 30 Javascript
Vue源码解读之Component组件注册的实现
Aug 24 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
GD输出汉字的函数的分析
2006/10/09 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
基于jQuery架构javascript基础体系
2011/01/01 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
浅谈Python处理PDF的方法
2017/11/10 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
.net软件工程师应聘上机试题
2015/03/10 面试题
毕业生实习鉴定
2013/12/11 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
员工趣味活动方案
2014/08/27 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
道歉信范文
2015/05/12 职场文书
水知道答案观后感
2015/06/08 职场文书
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS