InnerHTML Vergleich Chat
DarkSoja
- javascript
Hallo! Ich habe einen kleinen Chat geschrieben, den ich jetzt gerne mit Ajax dynamisch nachladen möchte, da bei PHP ein unschönes flackern entsteht.
function loadContent()
{
xmlHttpObject.open('get','Data/Chat.txt');
xmlHttpObject.onreadystatechange = handleContent;
xmlHttpObject.send(null);
return false;
}
function handleContent()
{
if (xmlHttpObject.readyState == 4)
{
if (!(document.getElementById('myContent').innerHTML == xmlHttpObject.responseText))
{
document.getElementById('myContent').innerHTML = xmlHttpObject.responseText;
}
}
setTimeout("loadContent()",3000);
}
loadContent();
Das ganze klappt auch, nur die zweite if Bedingung der Funktion "handleContent()" nicht... Ich möchte damit abfragen, ob sich der Inhalt geändert hat. Wenn nicht, soll auch nicht aktualisiert werden... Doch leider wird alle 3 Sekunden aktualisiert, auch wenn sich die Datei nicht geändert hat...
Wie kann ich dieses Problem lösen?
Viele Grüße!
Hi,
if (!(document.getElementById('myContent').innerHTML == xmlHttpObject.responseText))
{
document.getElementById('myContent').innerHTML = xmlHttpObject.responseText;
Das ganze klappt auch, nur die zweite if Bedingung der Funktion "handleContent()" nicht... Ich möchte damit abfragen, ob sich der Inhalt geändert hat. Wenn nicht, soll auch nicht aktualisiert werden... Doch leider wird alle 3 Sekunden aktualisiert, auch wenn sich die Datei nicht geändert hat...
Du irrst, wenn du annimmst, dass du beim Auslesen von innerHTML das gleiche bekommen würdest, wie beim reinschreiben - und das hätte dir eine Debug-Ausgabe eigentlich auch schon vor dem Fragen klar machen können.
Wie kann ich dieses Problem lösen?
Vergleiche nicht mit innerHTML, sondern mit dem in einer Variable gespeicherten Textinhalt des vorherigen Requests.
MfG ChrisB
Hi,
if (!(document.getElementById('myContent').innerHTML == xmlHttpObject.responseText)) {
document.getElementById('myContent').innerHTML = xmlHttpObject.responseText;
Das ganze klappt auch, nur die zweite if Bedingung der Funktion "handleContent()" nicht... Ich möchte damit abfragen, ob sich der Inhalt geändert hat. Wenn nicht, soll auch nicht aktualisiert werden... Doch leider wird alle 3 Sekunden aktualisiert, auch wenn sich die Datei nicht geändert hat...
Du irrst, wenn du annimmst, dass du beim Auslesen von innerHTML das gleiche bekommen würdest, wie beim reinschreiben - und das hätte dir eine Debug-Ausgabe eigentlich auch schon vor dem Fragen klar machen können.
Danke für die Antwort, ich habe die beiden Angaben (innerHTML und responesText) mal mit alert ausgeben lassen->Ergebnis: Gleich...
Wie kann ich dieses Problem lösen?
Vergleiche nicht mit innerHTML, sondern mit dem in einer Variable gespeicherten Textinhalt des vorherigen Requests.
MfG ChrisB
var Alt = "";
function loadContent()
{
xmlHttpObject.open('get','Data/Chat.txt');
xmlHttpObject.onreadystatechange = handleContent;
xmlHttpObject.send(null);
return false;
}
function handleContent()
{
if (xmlHttpObject.readyState == 4)
{
if (!(Alt == xmlHttpObject.responseText))
{
document.getElementById('myContent').innerHTML = xmlHttpObject.responseText;
var Alt = xmlHttpObject.responseText;
}
}
setTimeout("loadContent()",3000);
}
loadContent();
Ich habe das nun so umgestellt, doch leider klappt das immer noch nicht...
Wenn ich mir Alt ausgeben lasse (per Alert), so ist teilweise der Inhalt der Datei zu lesen, manchmal jedoch nichts (LEER)...
Viele Grüße!
Hi,
Du irrst, wenn du annimmst, dass du beim Auslesen von innerHTML das gleiche bekommen würdest, wie beim reinschreiben - und das hätte dir eine Debug-Ausgabe eigentlich auch schon vor dem Fragen klar machen können.
Danke für die Antwort, ich habe die beiden Angaben (innerHTML und responesText) mal mit alert ausgeben lassen->Ergebnis: Gleich...
Das glaube ich nicht.
Hast du das mal online? Mit welchem Browser testest du?
Wenn ich mir Alt ausgeben lasse (per Alert), so ist teilweise der Inhalt der Datei zu lesen, manchmal jedoch nichts (LEER)...
Dann machst du entweder die Ausgabe zu einem falschen Zeitpunkt, oder dein serverseitiges Script liefert in den Fällen einfach nichts. Vermutlich ist es aber eher ersteres.
MfG ChrisB
Hi,
var Alt = "";
var Alt = xmlHttpObject.responseText;
Wenn ich mir Alt ausgeben lasse (per Alert), so ist teilweise der Inhalt der Datei zu lesen, manchmal jedoch nichts (LEER)...
Das dürfte davon abhängen, welche der beiden Variablen Du ausgeben läßt ...
cu,
Andreas