Javascript 检测用户是否已停止滚动页面

Javascript 检测用户是否已停止滚动页面,javascript,scroll,Javascript,Scroll,我正在尝试用javascript做一些事情,让我的聊天行为比现在好一点 由于我使用PrimeFaces的轮询来更新面板并模拟聊天,因此面板每秒都会更新,这使得阅读旧消息变得非常困难(更新面板会导致在面板顶部重置滚动) 因此,我在div中添加了一个onscroll事件,以在用户滚动时停止轮询 但是我需要一种方法使它重新启动,所以我想到了一些类似于放置计时器并在滚动停止一分钟后调用poll.start() 有什么方法可以做到这一点吗?我在自己的聊天引擎上所做的是: 当新消息到达时 如果用户一直滚动

我正在尝试用javascript做一些事情,让我的聊天行为比现在好一点

由于我使用PrimeFaces的轮询来更新面板并模拟聊天,因此面板每秒都会更新,这使得阅读旧消息变得非常困难(更新面板会导致在面板顶部重置滚动)

因此,我在
div
中添加了一个
onscroll
事件,以在用户滚动时停止轮询

但是我需要一种方法使它重新启动,所以我想到了一些类似于放置计时器并在滚动停止一分钟后调用
poll.start()


有什么方法可以做到这一点吗?

我在自己的聊天引擎上所做的是:

当新消息到达时

  • 如果用户一直滚动到视图的(新消息)端,请将滚动定位在该端
  • 否则,请将滚动条保留在原来的位置

通过比较
scrollTop
的值与
0
scrollHeight offsetHeight

确定,可以很容易地测试这一点。。。你到底有什么问题?唯一的问题是javascript中没有和
onScrollStop
事件,所以我不知道如何处理这件事:)可能的重复——虽然提到了jQuery,但接受的答案在没有jQuery的情况下是适用的。这是afaik唯一的解决方案。我不知道这是否可以用PrimeFaces实现,因为轮询更新了整个面板,导致div被“刷新”。您的解决方案看起来不错,但需要推动,而不是民意测验。使用push,你可以创建一个
onMessage
方法来实现你所说的,但是我的民意测验在不检查面板的情况下更新了面板。它更像是每秒刷新一次,所以我无法控制它!隐马尔可夫模型。。。在这种情况下,您可以让轮询功能在更新div之前保存当前的滚动位置,然后在更新后将滚动位置设置回原位。