浏览器刷新后滚动到特定的垂直位置

时间:2014-08-10 14:02:12

标签: javascript angularjs scroll infinite-scroll

我正在为移动网络应用构建一个无限滚动样式列表(使用angular)。问题在于,用户应该看到的列表的初始起始位置位于中间位置。这在页面的初始加载时工作正常(设置scrollTop)。但是,在页面刷新时,浏览器会尝试将滚动位置设置为用户正在查看的最后位置。

我的黑客是在设置scrollTop时设置了足够大的延迟,以便在浏览器尝试之后发生,但这感觉很笨拙。是否有其他 angular 方式或常规js方式来实现此要求?

1 个答案:

答案 0 :(得分:1)

似乎"自动滚动到用户正在查看的最后位置" 在不同的浏览器中有所不同。

可能发生在DOMContentLoaded事件之后,或window.onload之后,或两者之后(例如在Chrome中发生两次)。

您可以使用window.onload将您的排名设置延迟到setTimeout之后。

简单的vanilla JavaScript看起来像这样:

window.onload = function () {
  setTimeout(function () {
    window.scrollTo(window.pageXOffset, 500);
  }, 0);
};

希望这有帮助。