DarkSoja: InnerHTML Vergleich Chat

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!

  1. 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

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. 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!

      1. 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

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      2. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.