Supportnet Computer
Planet of Tech

Supportnet / Forum / Webseiten/HTML

seite automatisch aktualisieren





Frage

hallo leuts, hätte da mal ne frage wo ihr mir bestimmt beantworten könnt... ich habe eine eigene internetseite und dort seit ein paar tagen ne seite auf der ein bild von meiner webcam zu sehen ist. das bild wird alle 5 minuten neu aufgenommen, mit datum,zeit und signatur versehen. kann ich in die seite irgendwas "einbauen" so das diese sich auch alle 5 minuten aktualisiert wenn sie geöffnet ist ? hab das schon desöfteren gehabt wenn ich auf internetseiten war das diese sich immer wieder selbst aktualisierten, also gibts doch da bestimmt ne möglichkeit, oder ? ach ja, bin kein html-profi, also wenn jemand ein script oder so hat wo ich direkt in die seite rein kopieren kann währe das perfekt ;-) im voraus danke und gruß, butschi

Antwort 1 von harrrharrr

Antwort 2 von Supermax

Es gibt auch Java-Applets, die in einem einstellbaren Intervall nur das Bild aktualisieren, was etwas Bandbreite sparen hilft, weil nicht immer die ganze Seite neu geladen werden muß.

Auch mit einem kleinen JavaScript läßt sich das leicht realisieren.

Antwort 3 von rfb

was allerdings in den Beitrag auf wer-weiss-was.de vergessen wurde zu erwähnen:

  • das klappt nur wenn die Browser entsprechend eingestellt sind, also wenn der User das explizit erlaubt. Der Hinweis "bitte ggf. die Seite von Hand aktualisieren" sollte daher nicht fehlen.
  • diese Technik darf auf Seiten mit dem Anspruch, barrierefrei zu sein, nicht verwendet werden.
  • sinnvoller als die Methode mit no-cache ist die Variante jedesmal einen neuen Bilddateinamen (einfach per angehängter Uhrzeit) zu verwenden, da dann nur eine User-gesteuerte Aktion erforderlich ist.

  • Antwort 4 von rfb

    @Supermax
    Zitat:
    Auch mit einem kleinen JavaScript läßt sich das leicht realisieren.
    das Nachladen eines Bildes unter Umgehung des Caches? Kannst du mal ein Beispiel nennen?

    Antwort 5 von Supermax

    Man kann in JavaScript genauso einen timestamp oder eine Zufallszahl an die URL des zu ladenden Bildes anhängen, z.B.

    <script type="text/javascript">
    var count = 0;
    function bildLaden() {
       document.images['bild'].src = 'bildname.jpg?'+count;
       count++;
       window.setTimeout('bildLaden()',300000);
    }


    Das ganze ist jetzt aus dem Stegreif von einer eigenen ähnlichen Seite, die ich vor ca. 3 Jahren mal gemacht hatte. Bitte keine Kommentare, daß es bei modernen Browsern mit DOM besser und eleganter ginge, auch auf Double-Buffering habe ich hier bewußt keine Rücksicht genommen, um den Code einfach zu halten.

    Antwort 6 von rfb

    Das setzt nun aber voraus, dass serverseitig gekärt ist, was auf diese Anfragen ausgeliefert weren soll - und dass ich die Seite innerhalb meiner Cache-Verfallszeit nicht zweimal besuche.

    Dein Verweis auf eventuelle Nicht-DOM-Kritik ist übrigens unbegründet, du arbeitest doch mit den Dokument-Objekten (Aufruf über document.images).

    Das Script ist vielmehr nicht unobstrusive - was im Zusammenhang mit window.setTimeout aber auch sehr schwierig hinzubekommen wäre und gerade für Anfänger dann kaum nachvollziehbar ist.

    Antwort 7 von rfb

    Bisschen gegrübelt - so sähe deine Funktion unobstrusive(r) aus (hier: gekapselt in ein JavaScript-Objekt um Interaktionen mit anderen Scripten zu vermeiden):

    <script type="text/javascript">
    var bildLaden = {
    count : 0,
    tu_es : function() {
    document.images['bild'].src = 'bildname.jpg?'+bildLaden.count;
    bildLaden.count++;
    window.setTimeout(bildLaden.tu_es()',300000);
    }
    }
    bildLaden.tu_es();
    </script>


    Antwort 8 von Supermax

    Ich kenne 2 Möglichkeiten, einfache Webcam-Bilder auf eine Webseite zu bringen. Entweder das Capture-Programm lädt die einzelnen Bilder ein einem festgelegten Intervall per FTP hoch, oder das Captureprogramm funktioniert selbst als Webserver. In beiden Fällen ist die URL des Bildes fix, durch anhängen eines veränderlichen Anteils, der vom Server jedoch ignoriert wird, sollte der Browser ohne aufs Cache zuzugreifen immer die aktuelle Datei anfordern.

    Das Problem "und dass ich die Seite innerhalb meiner Cache-Verfallszeit nicht zweimal besuche." läßt sich einfach lösen, indem count statt mit 0 mit der aktuellen Uhrzeit initialisiere, z.B.

    var jetzt = new Date();
    var count = jetzt.getTime();


    Antwort 9 von rfb

    gut, dann sähe das Script also so aus

    <script type="text/javascript">
    var bildLaden = {
    count : (new Date()).getTime(),
    tu_es : function() {
    document.images['bild'].src = 'bildname.jpg?'+bildLaden.count;
    bildLaden.count++;
    window.setTimeout(bildLaden.tu_es(),300000);
    }
    }
    bildLaden.tu_es();
    </script>


    Dann bliebe nur noch die Kritik, die der in meinem ersten Posting entspricht: Wenn der User JavaScript nicht zulässt (oder nicht darüber verfügt) bleibt nur die Aufforderung zum manuellen Reload (oder der Verzicht auf die aktuelle Ansicht von was-auch-immer-fuer-ne-webcam.jpg).

    Ich möchte kostenlos eine Frage an die Mitglieder stellen:


    Ähnliche Themen:


    Suche in allen vorhandenen Beiträgen: