scrollTop总是在safari中返回0

时间:2018-06-12 09:18:03

标签: javascript html5 reactjs ecmascript-6 safari

以下代码在chrome中完美运行,但在safari(桌面和移动设备)

中无效
const messageBody = document.querySelector(`.chatContainer`);
messageBody.scrollTop = messageBody.scrollHeight;

messageBody是一个带溢出y的div:scroll

每次将项目添加到div时,它都会滚动到底部。 知道如何让它在野生动物园中发挥作用吗?

2 个答案:

答案 0 :(得分:0)

我发现问题,这是我的反应代码中的一个问题。 每次我向我的数组添加一个新元素时,我的所有组件都被重新渲染。这是因为我覆盖了我给他们的现有身份。 在chrome中工作的代码在safari中不起作用,因为safari在渲染所有组件之前执行了代码。

答案 1 :(得分:-1)

ScrollPosition.prototype.restore = function () {
    if (this.readyFor === 'up') {
        this.node.scrollTop = this.node.scrollHeight -        
        this.previousScrollHeightMinusTop;
    }
}
this.previousScrollHeightMinusTop = this.node.scrollHeight-this.node.scrollTop;

参比 http://kirbysayshi.com/2013/08/19/maintaining-scroll-position-knockoutjs-list.html