我要做的是检测是否有任何新消息添加到mysql数据库中的对话。如果有,我想使用JavaScript滚动到页面底部的最后一条消息。
$(document).ready(function() {
var prevdata;
var interval = setInterval(function() {
$.ajax({
url: 'inc/aj_chat.php',
success: function(data) {
$('#messages').html(data);
afterdata = data;
}
});
setTimeout(function() {
alert(prevdata);
if (prevdata != afterdata) {
// Scroll Down function
}
prevdata = afterdata;
},1);
}, 3000);
});
正如你所看到的,我有一个setInterval循环每3000ms刷新一次,我试图将前一个循环中的变量传递到下一个循环中以比较它们。首先,这是实现这一目标的最佳方式吗?其次,如果是的话,我该如何做到这一点?
我会这样做:
$.ajax({
url: 'inc/aj_chat.php',
success: function(data) {
$('#messages').html(data);
if($(window).scrollTop() + $(window).height() > $(document).height() - 50) {
window.scrollTo(0,document.body.scrollHeight);
}
}
});
每次滚动条距离底部小于等于50像素时,它就会将滚动条发送到底部。如果不是,它将保持滚动条不变。您可以将数字50
调整为您想要的任意像素数。
所以这将确保你的聊天系统自动滚动,只有当用户没有在以前的消息中搜索。