Javascript 当新消息到达(不是您发送的)时,如何使聊天室中的滚动条向下滚动
实际页面参考:www.friendsinclass.co.nf 我正在建立一个简单的聊天,我有一个问题。加载页面时,聊天滚动条会自动向下滚动,如底部的updatescroll()函数所示。目前,updatescroll在$(document).ready内的setInterval中每秒调用一次,以便在写入新消息时向下滚动。如您所见,submitChat()中还调用了autoscroll(),这意味着每次我提交邮件时都会调用autoscroll。问题是,如果不是我的用户提交了一条消息,autoscroll将不会被调用,因此我每1秒设置一次autoscroll来解决这个问题 问题:如果用户想向上滚动查看旧邮件,autoscroll将每隔1秒再次向下滚动,使其搜索无效。如何以最简单的方式解决这个问题?我尝试了很多方法,但都不管用,而且我对Jquery不是很在行,所以请尽量简单 多谢各位!下面是JSJavascript 当新消息到达(不是您发送的)时,如何使聊天室中的滚动条向下滚动,javascript,jquery,html,ajax,scrollbar,Javascript,Jquery,Html,Ajax,Scrollbar,实际页面参考:www.friendsinclass.co.nf 我正在建立一个简单的聊天,我有一个问题。加载页面时,聊天滚动条会自动向下滚动,如底部的updatescroll()函数所示。目前,updatescroll在$(document).ready内的setInterval中每秒调用一次,以便在写入新消息时向下滚动。如您所见,submitChat()中还调用了autoscroll(),这意味着每次我提交邮件时都会调用autoscroll。问题是,如果不是我的用户提交了一条消息,autosc
function submitChat() {
form1.uname.readOnly = true;
form1.uname.style.border = 'none';
var uname = form1.uname.value;
var msg = form1.msg.value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4&&xmlhttp.status==200) {
document.getElementById('chatlogs').innerHTML = xmlhttp.responseText;
setTimeout(function(){ updateScroll(); }, 100);
}
}
xmlhttp.open('GET','insert.php?uname='+uname+'&msg='+msg,true);
xmlhttp.send();
setTimeout(function(){ updateScroll(); }, 100);
}
$(document).ready(
function(e) {
$.ajaxSetup({cache:false});
setInterval(function({$('#chatlogs').load('logs.php');updateScroll();}, 1000);
setTimeout(function(){ updateScroll(); }, 1200);
});
</script>
<script language="javascript">
function toggleState(item){
if(item.className == "on") {
item.className="off";
}
else {
item.className="on";
}
}
</script>
<script>
function updateScroll() {
var element = document.getElementById("chatlogs");
var elementHeight = element.scrollHeight;
element.scrollTop = elementHeight;
}
window.onload = updateScroll;
</script>
HTML切换:
<input type="button" id="btn" value="button"
class="off" onclick="toggleState(this)" />
我不确定这个问题是否与您之前提出的问题不同:解决方案将类似,检测用户是否在AJAX响应中滚动聊天,如果没有,则滚动到底部。是的,但是您能否实现我代码中上一个问题的代码?因为我试过这么做,但有点不对劲。
<input type="button" id="btn" value="button"
class="off" onclick="toggleState(this)" />