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;