我有一个div,我每1秒用Ajax重新加载它。并且它具有自动值作为溢出。为了让我的div始终处于最低点,我在Ajax请求中使用了一个javascript代码。
xmlHttp.onreadystatechange=function(){
document.getElementById('chatting').scrollTop = 9999999;
if(xmlHttp.readyState==4){
document.getElementById('chatting').innerHTML=xmlHttp.responseText;
setTimeout('Ajax()',1000);
}
}
var withdate=document.getElementById('firstdate').value;
nocache = Math.random();
xmlHttp.open("GET","db.getMessages.php?date=" + withdate + "&nocache = "+nocache,true);
xmlHttp.send(null);
}
window.onload=function(){
setTimeout('Ajax()',1000);
}
但是我不能选择文本而不能上去。加载新内容时,div会滑到底部。我该如何解决这个问题?
我也有一个问题。我正在使用PHP文件来定义json内容。输出是这样的:
{ "msg": [{"from":"demo","text":"test message "} ] }
但是Firebug向我展示了这个错误:
错误:JSON.parse:意外字符 源文件:http://localhost/script/script/json.js 行:20
第20行是:
var msgs = JSON.parse(xhr.responseText);
我很挣扎但没有解决:(
答案 0 :(得分:0)
您替换整个chat-Element并期望浏览器记住并保留选择? 我猜你正在实现一个简单的聊天客户端,对吧?然后,为什么你不只是拉新的消息而不是,我想,全部?将所有消息作为JSON返回并自行创建DOM节点,您追加到chat-element。这种方法允许您选择内容,因为它永远不会改变并保持流量下降。
顺便说一句: nocache - 参数通常使用时间戳来完成,因为时间总是在增加。 Math.random()不保证是唯一的。