Jquery 聊天卷轴赢了';有了新的消息,我就不下去了?

Jquery 聊天卷轴赢了';有了新的消息,我就不下去了?,jquery,Jquery,当一条新消息出现时,滚动条只会向上移动,而我有一个方法可以将其向下拖动,如果它在底部: element = $("#chat")[0]; if (element.scrollTop == element.scrollHeight - element.height) { element.scrollTop(element.scrollHeight);

当一条新消息出现时,滚动条只会向上移动,而我有一个方法可以将其向下拖动,如果它在底部:

                element = $("#chat")[0];
                if (element.scrollTop == element.scrollHeight - element.height) {
                    element.scrollTop(element.scrollHeight);                
                }               
运行此间隔时:

        setInterval(function() {
                pingServer();   
                element = $("#chat")[0];
                if (element.scrollTop == element.scrollHeight - element.height) {
                    element.scrollTop(element.scrollHeight);                
                }               
        }, 5000);   
它以前工作过,我不知道为什么现在停止工作了

知道它为什么停止了吗?


重新加载功能

您对服务器的ping正在异步工作,并且您没有调用逻辑来调整此请求回拨时的滚动位置

因此,除非您的ping立即响应,否则您的流程是:

  • Ping服务器
  • 调整卷轴
  • 收到平的答复
  • 新增讯息
鉴于您需要:

  • Ping服务器
  • 收到平的答复
  • 新增讯息
  • 调整卷轴
因此,在添加新消息后,您需要在回拨中调用滚动调整


知道它为什么停了吗


我猜您的服务器响应现在需要更长的时间(可能您已经在生产环境中移动了),因此您的流程不同步。

试试这个,当我在控制台中测试时,它似乎可以工作:

var element = $("#chat")[0];
element.scrollTop = element.scrollHeight;

我不认为你需要
,如果
条件,你永远不会进入它。

是的,但我也需要它,因为如果我向上滚动,有人发帖后聊天会下降,使用
$(element).height()
非常麻烦,因为
元素.height
没有意义。只是替换元素。带$(元素)?,这不是一个变量吗?它只在聊天室信息量不足时发生
var element = $("#chat")[0];
element.scrollTop = element.scrollHeight;