我正在为移动网络应用构建一个无限滚动样式列表(使用angular)。问题在于,用户应该看到的列表的初始起始位置位于中间位置。这在页面的初始加载时工作正常(设置scrollTop
)。但是,在页面刷新时,浏览器会尝试将滚动位置设置为用户正在查看的最后位置。
我的黑客是在设置scrollTop
时设置了足够大的延迟,以便在浏览器尝试之后发生,但这感觉很笨拙。是否有其他 angular 方式或常规js方式来实现此要求?
答案 0 :(得分:1)
似乎"自动滚动到用户正在查看的最后位置" 在不同的浏览器中有所不同。
可能发生在DOMContentLoaded
事件之后,或window.onload
之后,或两者之后(例如在Chrome中发生两次)。
您可以使用window.onload
将您的排名设置延迟到setTimeout
之后。
简单的vanilla JavaScript看起来像这样:
window.onload = function () {
setTimeout(function () {
window.scrollTo(window.pageXOffset, 500);
}, 0);
};
希望这有帮助。