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 相关文章推荐
javascript写的简单的计算器,内容很多,方法实用,推荐
Dec 29 Javascript
jquery删除提示框弹出是否删除对话框
Jan 07 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
Jun 19 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
解决循环中setTimeout执行顺序的问题
Jun 20 Javascript
在vue中使用G2图表的示例代码
Mar 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
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
php mysql 封装类实例代码
2016/09/18 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
用python制作个音乐下载器
2021/01/30 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
医学实习生自我鉴定
2013/12/12 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
装修设计师求职信
2014/02/26 职场文书
租赁协议书范本
2014/04/22 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
《去年的树》教学反思
2016/02/18 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书