0

我已经有一个关于这个的 stackoverflow 问题,但答案不够恰当,这次我想以不同的方式解释更多关于不同产品的信息。

首先,应该如何加载 AJAX 聊天消息?

  • 我是否需要每隔几毫秒发送一个 AJAX 请求以检查是否有新消息,然后使用时间戳加载新消息(如果存在)?还是我只需要每隔几毫秒重新加载所有消息并用新消息列表替换 div ?

问题

好的,我的聊天当前每 5,000 毫秒加载一次所有消息。因此,当发布新消息并重新加载聊天时,滚动条将保持在同一位置,并且一条新消息将出现在下方。

如您所见,在stackoverflow聊天中,它以某种方式自动上升,当出现新消息时,不知何故,一条新消息在聊天底部滑动,而旧消息只是在其上方没有任何滚动,但滚动变大&我可以向上滚动查看旧消息。

肮脏的解决方案1:在重新加载时让滚动向下滚动到底部,这真的很烦人。

最终解决方案:检查用户的滚动条是否位于底部,如果是,则加载新消息并立即向下滚动。如果滚动条不在聊天底部,则聊天不会向下滚动。

但是这些解决方案非常糟糕,我想做一些像 stackoverflow 聊天那样的事情,它完美地滑动新消息,没有任何滚动。

这个问题有有效的解决方案吗?我想我不是唯一遇到这个问题的人。

4

0 回答 0