停用Chrome的滚动保留功能

时间:2017-02-13 13:39:45

标签: javascript google-chrome scroll

我有一个包含项目列表的页面:

enter image description here

加载更多按钮应该通过ajax加载更多项目并将其附加到保留当前滚动位置的项目容器中。所以在我点击它后,我希望它看起来像这样(绿色项目是新的):

enter image description here

但实际上Chrome 56会执行一些计算以使页面保持相同状态,我看到的内容如下:

enter image description here

有没有办法阻止Chrome中的智能滚动位置设置?

更新:我只能在父容器(在我的情况下是' body'显示)中显示:flex' property(我用它来实现'粘性页脚'功能)。

4 个答案:

答案 0 :(得分:7)

我通过将overflow-anchor: none;添加到滚动容器来解决了类似的问题。

https://wicg.github.io/ScrollAnchoring/

答案 1 :(得分:1)

这很简单。在执行AJAX调用之前,将页面的滚动位置保存到变量,然后在调用之后滚动到该变量指示的位置。以下是您在AJAX通话之前应该写的内容:

var scrollpos = window.scrollY;

这是你的AJAX调用之后的代码

window.scrollTo(0,scrollpos)

希望这有效

答案 2 :(得分:0)

为什么chrome会进行计算以保留滚动位置?通常页面只会更长,因此滚动位置无论如何都会保持固定。 我假设您删除了按钮,因此无法保留位置,而内容未重新加载。您应该保留dom中的按钮空间,并在插入重新加载的项目时删除保留的空间。

答案 3 :(得分:0)

今天看来,该房产被排除在外了吗?添加“ overflow-anchor:无;”时作为div元素上的样式,我得到以下消息:验证(CSS 3.0):“ overflow-anchor”不是已知的CSS属性名称。