在下面你会找到我的原始代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
我想要的是根据滚动条的高度(或位置)更改间隔,因为每次运行refreshChat函数时,它都会将滚动条向下推,这使得无法滚动聊天。
我已经尝试过更改:
function refreshChat() {
var id = "'.$convers_id.'";
var receiver = "'.$system->getFirstName($second_user->full_name).'";
$.get("'.$system->getDomain().'/ajax/refreshChat.php?id=" + id + "&receiver=" + receiver, function(data) {
$("#messages").html(data);
$(".conversation-message-list").getNiceScroll(0).scrollTop($(".conversation-content").height(), -1);
setTimeout(refreshChat, 3000);
});
}
function sendMessage() {
var user2 = "'.$user2.'";
var message = $("#message");
if(message.val() != "" && message.val() != " ") {
$.get("'.$system->getDomain().'/ajax/sendMessage.php?id="+user2+"&msg="+encodeURIComponent(message.val()), function(data) {
$("#messages").html(data);
message.val("");
});
}
}
$(document).keypress(function(e) {
if(e.which == 13) {
sendMessage();
}
});
function appendToMessage(str) {
var message = $("#message");
message.val(message.val()+" "+str);
$("#emoticonList").modal("hide");
}
要:
window.setInterval(function(){
refreshChat();
}, 1000);
但这打破了剧本。我想事先感谢所有人,让efford帮我解决问题。
注意:我根据MPLUNGJAN的建议编辑了我的原始代码
但是如何按照建议在聊天屏幕中添加新消息?
HTML:
if ($(window).scrollTop() > 200) {
window.setInterval(function(){
refreshChat();
}, 100000000000);
} else {
window.setInterval(function(){
refreshChat();
}, 1000);
}
答案 0 :(得分:1)
您不应该在AJAX上使用setInterval。而是从成功内部使用setTimeout,然后每次滚动到底部 - 假设这是getNiceScroll的作用,你可以这样做:
function refreshChat() {
var id = "'.$convers_id.'";
var receiver = "'.$system->getFirstName($second_user->full_name).'";
$.get("'.$system->getDomain().'/ajax/refreshChat.php?id=" + id + "&receiver=" + receiver, function(data) {
$("#messages").html(data);
$(".conversation-message-list").getNiceScroll(0).scrollTop($(".conversation-content").height(), -1);
setTimeout(refreshChat, 3000);
});
}
你还需要发送完整的聊天吗?为什么不添加新消息(如果有的话)。然后,您可以测试是否有新的东西,如果没有,则不做任何事情:
$("#messages").append(data);