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 Konami Code 实现代码
Jul 29 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
Jan 15 Javascript
Js动态添加复选框Checkbox的实例方法
Apr 08 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
jQuery中get()方法用法实例
Dec 27 Javascript
纯JS实现本地图片预览的方法
Jul 31 Javascript
浅析在javascript中创建对象的各种模式
May 06 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
Angular中的interceptors拦截器
Jun 25 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
Nov 28 Javascript
JavaScript制作3D旋转相册
Aug 02 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
BBS(php & mysql)完整版(五)
2006/10/09 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
axios基本入门用法教程
2017/03/25 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
python之DataFrame实现excel合并单元格
2021/02/22 Python
python版飞机大战代码分享
2018/11/20 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
应届生保险求职信
2013/11/11 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
文秘自荐信
2014/06/28 职场文书
深入理解python多线程编程
2021/04/18 Python
python实现简单区块链结构
2021/04/25 Python