因此,我正在构建一个带有聊天系统的iOS / Android Cordova应用。
在div的顶部添加更多内容时,保持滚动位置对于浏览器和Android是正确的,但是在iOS中,只要添加任何内容,它就会自动滚动到顶部。我可以通过设置大量的超时并一次又一次地设置scrollTop
来解决它,但是不可能知道哪个在正确地工作(显然它们之间有瞬间的跳跃)。 / p>
我正在使用React,并尝试在render()
,componentDidUpdate()
和requestAnimationFrame
中设置scrollTop。没有任何东西可靠地工作。
目前,我已经在componentDidUpdate中获得了它,但是,显然,这是一个可怕的解决方案:
let newScrollTop = this.el.scrollTop
let newHeight = this.el.scrollHeight
let oldHeight = this.lastCalculatedScrollHeight
const heightDelta = newHeight - oldHeight
const heightToScrollTo = newScrollTop + heightDelta
this.el.scrollTop = heightToScrollTo
setTimeout(_ => {
this.el.scrollTop = heightToScrollTo
})
setTimeout(_ => {
this.el.scrollTop = heightToScrollTo
},50)
setTimeout(_ => {
this.el.scrollTop = heightToScrollTo
},100)
setTimeout(_ => {
this.el.scrollTop = heightToScrollTo
},150)
setTimeout(_ => {
this.el.scrollTop = heightToScrollTo
},200)
以前有人遇到过吗?真让我发疯。