如何在用户仍在滚动时获取 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 的区别