前端 · 2021年2月20日 0

Vue记录用户离开的页面位置,返回页面重新复位

经常会有访问时进入详情后,再返回列表的情况。
如果整体路由地址相同,返回倒没什么问题。但是如果不同就需要手工记录,返回读取再定位。

  1. 在路由跳转之前编写方法
beforeRouteLeave(to, from, next) {
      let className = document.getElementsByClassName('el-main')
      //兼容性记录高度
      var scrollTop = className[0].pageYOffset || className[0].scrollTop || className[0].scrollTop
      sessionStorge.setItem('POSITION', scrollTop)
      next()
    },
  1. 回来时获取用户所浏览的位置
    返回该页面时,重新获取这个位置,并且通过DOM的scrollTop滚动到指定位置
let className = document.getElementsByClassName('el-main')
this.$nextTick(() => {
    var pos = sessionStorge.getItem('POSITION')
    className[0].scrollTop = pos
    })
  1. 注意sessionStorge,该方法仅在此次页面会话中有效。关闭后,下次再进来及无效