J
j-l-n
Guest
Ich arbeite - wie auch schon in anderen Threads erwähnt - zurzeit an einem Chat.
Zum Nachladen von Nachrichten verwende ich folgendes:
Das ganze wird in einem div mit feste Höhe und overflow=auto angezeigt. Kommt nun eine neue Nachricht hinzu, wird diese nicht angezeigt, man muss erst nach unten scrollen, um sie zu sehen - wobei man natürlich nicht merkt, ob eine neue denn überhaupt vorhanden ist.
Wie muss ich den Code nun erweitern, dass (NUR WENN NEUER INHALT VORHANDEN IST) der div sich automatisch nach unten scrollt oder die Nachricht so eingefügt wird, dass sie automatisch sichtbar ist und dafür die alteb Nachrichten "nach oben schiebt"?
Zurzeit habe ich die - ebenfalls bekannte - Autoscroll Lösung, die alle 200ms automatisch scrollt. Dies ist allerdings nur eine Notlösung und daher bitte ich darum, mir zu helfen, wie ich das oben beschriebene Problem lösen kann!
Zum Nachladen von Nachrichten verwende ich folgendes:
Code:
var xmlhttp = false;
var xmlhttp2 = false;
function ajax_read(url) {
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType('text/xml');
}
} else if(window.ActiveXObject){
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
}
}
}
if(!xmlhttp) {
alert('Cannot create an XMLHTTP instance');
return false;
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4) {
document.getElementById("content").innerHTML = xmlhttp.responseText;
zeit = new Date();
ms = (zeit.getHours() * 24 * 60 * 1000) + (zeit.getMinutes() * 60 * 1000) + (zeit.getSeconds() * 1000) + zeit.getMilliseconds();
intUpdate = setTimeout("ajax_read('chat-daten.txt?x=" + ms + "')", waittime)
}
}
xmlhttp.open('GET',url,true);
xmlhttp.send(null);
}
function ajax_write(url){ //diese Funktion ist eigentlich zum Absenden einer Nachricht da, ich poste sie aber trotzdem gleich mit
if(window.XMLHttpRequest){
xmlhttp2=new XMLHttpRequest();
if(xmlhttp2.overrideMimeType){
xmlhttp2.overrideMimeType('text/xml');
}
} else if(window.ActiveXObject){
try{
xmlhttp2=new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try{
xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
}
}
}
if(!xmlhttp2) {
alert('Cannot create an XMLHTTP instance');
return false;
}
xmlhttp2.open('GET',url,true);
xmlhttp2.send(null);
}
Wie muss ich den Code nun erweitern, dass (NUR WENN NEUER INHALT VORHANDEN IST) der div sich automatisch nach unten scrollt oder die Nachricht so eingefügt wird, dass sie automatisch sichtbar ist und dafür die alteb Nachrichten "nach oben schiebt"?
Zurzeit habe ich die - ebenfalls bekannte - Autoscroll Lösung, die alle 200ms automatisch scrollt. Dies ist allerdings nur eine Notlösung und daher bitte ich darum, mir zu helfen, wie ich das oben beschriebene Problem lösen kann!
Zuletzt bearbeitet von einem Moderator: