http://driptone.com/jony/applications/chat/index.php
当新消息发生时,滚动就会上升,而我有一个方法可以将其向下拖动,如果它在底部:
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);
之前曾经工作过,我不知道为什么它现在停止工作了。
知道为什么要停止?
function reload() {
$.post("ajax.php", { loadMessages : "1" }, function(data) {
$(".discussion").html(data)
element = $("#chat")[0];
if (element.scrollTop == element.scrollHeight - element.height) {
element.scrollTop(element.scrollHeight);
}
});
}
重新加载功能
答案 0 :(得分:0)
您对服务器的ping是异步工作的,并且您没有调用逻辑来调整此请求回调时的滚动位置。
因此,除非你的ping立即响应,否则你的流程是:
您需要:
因此,在添加新消息后,您需要在回叫中调用滚动调整。
知道为什么会停止吗?
我的猜测是您的服务器响应现在需要更长时间(可能您已在生产环境中移动),因此您的流程流程不同步。
答案 1 :(得分:0)
尝试这个,在我在控制台中测试时似乎有效:
var element = $("#chat")[0];
element.scrollTop = element.scrollHeight;
我认为你不需要if
条件,你永远不会进入它。