const recordHistoryPosition = () => {
if (window.history.replaceState) {
const state = {
__scrollX: window.scrollX,
__scrollY: window.scrollY,
}
window.history.replaceState(state, '') // 第二个参数是页面 url,缺省值为当前页面
}
}
const scrollToHistoryPosition = () => {
const state = window.history.state
if (state &&
Number.isFinite(state.__scrollX) &&
Number.isFinite(state.__scrollY)) {
window.scrollTo(state.__scrollX, state.__scrollY)
}
}
const clearHistoryPosition = () => {
const state = window.history.state
if (state && window.history.replaceState) {
window.history.replaceState(null, '')
}
}
module.exports = {
recordHistoryPosition,
scrollToHistoryPosition,
clearHistoryPosition,
}
注:
1. 跳转页面时调用 recordHistoryPosition,以记录当前浏览位置;
2. 在跳转回来时,数据加载完成后调用 scrollToHistoryPosition(一定要等到数据加载完再调用);
3. 在 scrollToHistoryPosition 下方加上 setTimeout(() => clearHistoryPosition(), 100)。