Seite neu laden

  • Guten Morgen,
    letzte Nacht habe ich einen einfachen PHP-Chat programmiert. Bei mir tritt das wohl alt bekannte Problem auf: es flimmert...

    Ich lade die Seite mit folgendem neu:

    Code
    <script>
    
    
      setTimeout("window.location.replace('chatlog.php')",1);
    
    
    </script>


    Gibt es da eine bessere Lösung, welche das flimmern nicht anzeigt?
    Gruss,
    Andreas

  • Man kann das via Ajax und Threads realisieren, ist allerdings ein bisschen mehr Fachwissen von nöten.

    Wie sendest du denn bisher deine Daten ab?

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Ganz normal mit MySQL. Im Prinzip eine Shoutbox, sie sich einfach immer aktualisiert. Aber ab und zu beginnt der Bildschirm etwas zu flimmern.

  • Mir fällt gerade auf, dass du nur 1 Millisekunde die aktuelle Anzeige behällst, stell den Timeout mal etwas höher, so auf 500-2000 /also, 0.5 oder 2.0 sek, dass müsste schon etwas helfen.

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Hm, dass ist eigentlich absichtlich so. Ich habe nicht gerne Verzögerungen... Ich habe aber eine Idee, weiss nur nicht ganz wie ich das machen soll. Die Seite hat kein automatischer "setTimeout("window.location.replace('chatlog.php')",1);".
    Diesen aktiviert es nur, wenn man sich über dem Eingabefeld "message" (input.text) befindet. Falls man was markieren will im chatlog.php ist das ganz nützlich. Nur: Wie mache ich das?

  • Ja, dachte ich auch. Nur bei mir scheint das nicht zu funktionieren...

    PHP
    print "<input type='text' name='message' style='border: 1px solid #aaaaaa;' onmouseover=\"javascript:setTimeout(\"window.location.replace('chatlog.php')\",1);\">";


    Das ist doch richtig so?

  • Ich meine da sind ein paar Klammern zu viel drin, du lässt dir dein window.location zum String machen.

    print "<input type='text' name='message' style='border: 1px solid #aaaaaa;' onmouseover=\"javascript:setTimeout(window.location.replace('chatlog.php'),1);\">";

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Damit aktualisiert es zwar den Chat - allerdings lädt es in das aktuelle Frame die Datei "chatlog.php". Also habe ich unten (Eingabeframe) und oben das selbe zu sehen.

  • Probier doch mal, dich mit Ajax zu beschäftigen.
    Du kannst ein PHP-Script schreiben, das bei jedem Aufruf ausgibt, ob es eine neue Nachricht gibt oder nicht - einfach mit 0 oder 1.
    Das lädtst du dann in ganz kurzen Abständen immer wieder, und nur wenn da 1 steht, setzt du den Inhalt des divs mit dem Chat neu.
    http://de.wikibooks.org/wiki/Websiteentwicklung:_AJAX

    Sogar ich habe (mit einiger Hilfe) was mit Ajax hingekriegt und ich bin ein absoluter JS-Noob. ;)