如何在用户仍在滚动时获取 scrollTop 属性

Posted

技术标签:

【中文标题】如何在用户仍在滚动时获取 scrollTop 属性【英文标题】:How to get scrollTop property while user is still scrolling 【发布时间】:2017-04-16 08:56:43 【问题描述】:

我有一个使用 AJAX 实时刷新聊天部分的网站。当用户发送消息时,我正在努力使聊天滚动到底部,但如果来自其他人的消息正在加载,则保持可滚动状态。顺便说一句,这一切都有效。无论如何,每当来自 AJAX 请求的新数据替换当前数据时,它都会滚动到 div 的顶部。我通过在用户滚动时获取 div 的 scrollTop 属性并将 div 的 scrollTop 设置为我在 AJAX 数据进入时保存的上一个 scrollTop 来解决这个问题。当我这样做时,jquery 事件仅在我之后执行并获取 scrollTop已经停止滚动,如果数据刷新时我仍在滚动,这会导致滚动位置发生跳转。有谁知道即使用户仍在滚动过程中我如何获得 scrollTop 值?

提前致谢:)

【问题讨论】:

您是否可以不替换 div 的完整内容,而只添加新消息?这样,浏览器应该透明地处理滚动。 更好.. 使用虚拟重复。 @Pharaoh 我稍后会解决这个问题,但现在我想要一个快速的解决方案,这样我就可以暂时不用担心聊天,而是进入网站的更重要部分。跨度> 【参考方案1】:

确定里面的滚动顶部位置:

$(window).scroll(function()

    )

每次移动滚动条时,如果它是默认窗口,则执行此功能(否则使用相应的元素)。

【讨论】:

以上是关于如何在用户仍在滚动时获取 scrollTop 属性的主要内容,如果未能解决你的问题,请参考以下文章

scrollTop, offsetTop, pageYOffset, scrollY 的区别

如何设置ReactDOM节点的scrollTop属性?

如何知道用户仍在 UIScrollView 中触摸屏幕?

获取滚动条的位置

document.documentElement.scrollTop(获取滚动条位置)

document.documentElement.scrollTop(获取滚动条位置)