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 full screen 全屏显示页面元素的方法
Sep 27 Javascript
jquery的live使用注意事项
Feb 18 Javascript
js toFixed()方法的重写实现精度的统一
Mar 06 Javascript
JS比较2个日期间隔的示例代码
Apr 15 Javascript
jquery实现简单手风琴菜单效果实例
Jun 13 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
Sep 18 Javascript
第九篇Bootstrap导航菜单创建步骤详解
Jun 21 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
vue点击页面空白处实现保存功能
Nov 06 Javascript
阿望教你用vue写扫雷小游戏
Jan 20 Javascript
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
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中使用接口实现工厂设计模式的代码
2012/06/17 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
tornado框架blog模块分析与使用
2013/11/21 Python
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
如何利用python查找电脑文件
2018/04/27 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Python实现石头剪刀布游戏
2021/01/20 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
美国牛仔品牌:True Religion
2018/11/16 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
店面销售职位的职责
2014/03/09 职场文书
学校运动会简讯
2015/07/20 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书