近期在業務中要實現keep-alive記住滾動條位置,發現scrollTop一直為0,排除各個組件的問題后仍未找到解決辦法,最后考慮到是css的問題。
mounted() {
//一開始使用的@scroll綁定在container上沒有觸發,后來發現使用這種方法有效
window.addEventListener('scroll', this.scroll, true)
},
methods: {
//封裝的兼容性方法
scroll() {
//獲得頁面向左、向上卷動的距離
function getScroll() {
return {
left:
window.pageXOffset ||
document.documentElement.scrollLeft ||
document.body.scrollLeft ||
0,
top:
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop ||
0
};
}
//這里的this.$nextTick一定要有
this.$nextTick(() => {
//這里是外層container
const container = this.$el.querySelector('.container')
if (container) {
//正常獲取scrollTop
console.log(this.$el.querySelector('.container').scrollTop);
}
})
}
}
.container {
/* 這兩個是必須要有的,不要寫成overflow-y:auto; */
overflow-y: scroll;
height: 100%;
}
如有不足歡迎指正