vue router 如何在返回的时候保存滚动高度?
list.vue和detail.vue,微信浏览器内点击list后打开detail,然后按“返回”,list页都回到顶端,无法保存点击之前的高度。
尝试一下办法
1、用keep-alive,因为返回时list内容有更新,所以没有使用,但是尝试过也无效。
2、用scrollBehavior:设置router的mode:history,打开history模式,但是savedPosition始终都是{x:0,y:0}.
3、尝试以下思路:在跳转到detail之前,获取滚动高度scrollTop,保存该高度,从detail回list的时候再设置滚动高度。现在遇到了一个问题,就是怎么样也获取不到scrollTop。
调试窗口里显示
在list的mountd里添加如下代码
var dom = document.querySelector('#wk_list')
dom.addEventListener('scroll', function () {
console.log(this.scrollTop)
}, false)
观察scroll方法,应已添加成功
可是就是无法触发事件,获取滚动高度值,dom.scrollTop始终为0,这是为什么啊?或者还有什么办法可以保存滚动高度的?
谢谢!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我找到问题原因了,用了vux里面的viewbox的组件了,需要用专门的方法getScrollTop去获取scrollTop.
这个事件绑定放到 mounted 里面才可以触发。
keep-alive
需要和scrollBehavior
配合一起使用数据不刷新的问题可以使用
activated
和deactivated
这两个钩子来触发如果不使用
keep-alive
&scrollBehavior
,可以使用window.pageXOffset
&window.pageYOffset
来获取页面的滚动高度在路由变化前