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 相关文章推荐
拖动一个HTML元素
Dec 22 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
Sep 27 Javascript
清除div下面的所有标签的方法
Feb 17 Javascript
jQuery中prependTo()方法用法实例
Jan 08 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
基于javascript实现单选及多选的向右和向左移动实例
Jul 25 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
angularJS深拷贝详解
Mar 23 Javascript
ReactNative踩坑之配置调试端口的解决方法
Jul 28 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
vue 解决异步数据更新问题
2019/10/29 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
python操作excel的方法
2018/08/16 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Python执行时间的几种计算方法
2020/07/31 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
python基于opencv 实现图像时钟
2021/01/04 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
linux下进程间通信的方式
2013/01/23 面试题
电子商务专业学生的学习自我评价
2013/10/27 职场文书
《长城》教学反思
2014/02/14 职场文书
假面舞会策划方案
2014/05/29 职场文书
订货会邀请函
2015/01/31 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
React列表栏及购物车组件使用详解
2021/06/28 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js