jenk heidsen: bilder-reload alle 15 sekunden ?

hallo leute,

ich suche ein kleines script, dass mir ein bild
in einem zeitabstand immer wieder neu lädt.

das bild selbst wird durch ein kleines perlscript ausgegeben,
dass aus einem pool per zufall ein bild ausgibt.

http://www.gpmc.de/users/alteschule/html/alteschule.shtml

im moment reloade ich einfach die ganze site - ist natürlich
unsinn ! daher suche ich das oben angegebene script !

vielen dank & viele grüße,

jenk.

  1. hi.

    http://www.gpmc.de/users/alteschule/html/alteschule.shtml

    mhh, um diese seite zu sehen benötige ich ein passwort und einen username ;o)

    im moment reloade ich einfach die ganze site - ist natürlich
    unsinn ! daher suche ich das oben angegebene script !

    ich hab mir mal ein javascript geschrieben, dass meine webcam auf meiner page vernünftig zum laufen bringen sollte. es funktioniert sogar... ;o)


    <script language=javascript>
        function bildreload()
        { var number = Math.random();
         if(document.layers)
        document.Webcam.document.Cam.src = 'http://www1.inetservice.de/wizz99/cam/cam.jpg?'+ number +'';
         else
        document.Cam.src = 'http://www1.inetservice.de/wizz99/cam/cam.jpg?'+ number +''; }

    function reload(zeit)
        { window.setTimeout("bildreload()",[zeit]); }
        window.onerror = "return true";
      </script>


    so, dass steht im <head>-bereich. es gibt da ne abfrage für document.layers (also NS). diese abfrage braucht man nur, wenn man mit layern/divs arbeitet, weil man si mit IE anders anspricht, als mit NS (bzw umgekehrt °g°). du kannst die abfrage bei bedarf auch weglassen und einfach document.Cam.src schreiben. das setzt dann nur noch voraus, dass das zu aktualisierende bild den namen "Cam" trägt (achte auf die großschreibung!).

    dann:


    <body onload="bildreload()">
    <div id="Webcam">
    <img name="Cam" id="Cam" src="../pics/webcam/loading.jpg" onload="reload(1)" onerror="reload(1)" border=0 alt="">
    </div>
    </body>


    wie gesagt: den layer/div-bereich kann man auch weglassen, ich brauchte ihn, um das bild schön zu positionieren...

    das bild, was zuerst angezeigt wird, ist ein nettes loading bild. du kannst natürlich auch direkt dein gewünschtes bild anzeigen lassen. beim <img onload="reload(1)"> gibst du in der klammer deine zeit in millisekunden an. hier ist es eine millisekunde, weil meine webcam ja recht flüssig laufen soll... für dich wahrscheinlich unwichtig ist onerror="reload(1)". ich hab das benutzt, weil es probleme gab, wenn die webcam-software gerade ein bild hochgeladen hat (es aber noch nich vollständig zur verfügung stand, was durchaus vorkommt bei 15kb...) und das script wieder die quelle einlesen wollte, wurde dieser typische platzhalter mit dem X (im IE) angezeigt. das script war damit beendet (weil es ja nur greift, wenn das bild "onload" ist). daher noch das onerror, damit das script in jedem falle weitermacht. kannst es ja stehen lassen, sicher ist sicher.

    ach so, die sache mit der zufallszahl (Math.random()): die zahl wird so an die bildurl drangehängt:

    bild.jpg?0.82390894398239 usw.

    damit trickst du den browser-cache aus. wenn du immer nur das bild selbst (ohne das "?0.902890748" dahinter) lädst, wird auch immer nur das gleiche, alte bild angezeigt. das macht - zumindest bei ner webcam - keinen sinn.

    so, das wars ;o)
    http://wizz99.de

    1. das ist schon mal recht schön, vielen dank !

      allerdings bricht das ganze beim nachladen etwas unschön
      um - kann man das vermeiden ?

      http://www.gpmc.de/users/alteschule/html/alteschule.shtml

      vielen dank & viele grüße,

      gianni.

      1. hi.

        allerdings bricht das ganze beim nachladen etwas unschön
        um - kann man das vermeiden ?

        was bricht wie um? mhh? was meinst du? wenn ichs mir angucke, siehts eigentlich recht normal aus. vom neuladen merkt man (bei mir) nur was, wenn man auf den text, der ganz kurz in der status-bar auftaucht, achtet. sonst nichts.

        wizz99.de

  2. hallo leute,

    ich suche ein kleines script, dass mir ein bild
    in einem zeitabstand immer wieder neu lädt.

    Dazu braucht's kein Javaskript.

    das bild selbst wird durch ein kleines perlscript ausgegeben,
    dass aus einem pool per zufall ein bild ausgibt.

    Wenn das Bild sowieso schon von einem Perlskript generiert wird, ist es bestimmt kein Akt, mit CGI::header() eine Info hinzuzufügen. Ich gehe mal davon aus, dass du strukturiert programmierst, und use_named_parameters() nicht aufgerufen wurde. Die erste print()-Anweisung deines Perlskriptes muss folgendermaßen aussehen:

    $inhaltstyp = 'image/jpeg';

    oder zumindest 'image'

    oder anderer 'image/subtyp'

    Gehen wir davon aus, Es wäre Samstag der 20. Mai 2001, 15:00 Uhr (klientseitig).

    $zeitangabe = 'Sat, 20 May 2001 15:00:15 GMT';

    print header(
         -type    =>  $inhaltstyp,
         -expires =>  $zeitangabe,
         -status  =>  200
    );

    Beachte, dass die 15 Sekunden schon teilweise vergangen sind, sobald das Bild vollständig geladen ist. Du solltest also großzügig 30 Sekunden verwenden. Um genau zu sein, kannst anhand des Date:-Headers einen Uhrenvergleich zwischen Server und Klient durchführen. Wenn du den Unterschied (also die Übertragungszeit) zu deinen 15 Sekunden addierst, wird der Browser mit dem Zählen erst anfangen, wenn das Bild vollständig übertragen ist.

    [...]

    im moment reloade ich einfach die ganze site - ist natürlich
    unsinn ! daher suche ich das oben angegebene script !

    Du meinst die Page, nicht die Site. *besserweiß* Das Verzeichnis "selfaktuell" mit allem darunter ist insgesamt eine (Web-) Site. Im Moment liest du eine Antwort auf die Page <./?m=145405&t=27897>.

    1. Moin,

      ich suche ein kleines script, dass mir ein bild
      in einem zeitabstand immer wieder neu lädt.

      Dazu braucht's kein Javaskript.

      print header(
           -type    =>  $inhaltstyp,
           -expires =>  $zeitangabe,
           -status  =>  200
      );

      Bitte verbreite nicht solchen Unsinn.

      im moment reloade ich einfach die ganze site - ist natürlich
      unsinn ! daher suche ich das oben angegebene script !

      Du meinst die Page, nicht die Site. *besserweiß* Das Verzeichnis "selfaktuell" mit allem darunter ist insgesamt eine (Web-) Site. Im Moment liest du eine Antwort auf die Page <./?m=145405&t=27897>.

      Bitte verbreite nicht solchen Unsinn.

      --
      n.d.p.

      1. Hi

        ich suche ein kleines script, dass mir ein bild
        in einem zeitabstand immer wieder neu lädt.

        Dazu braucht's kein Javaskript.

        print header(
             -type    =>  $inhaltstyp,
             -expires =>  $zeitangabe,
             -status  =>  200
        );

        Bitte verbreite nicht solchen Unsinn.

        Was heißt hier "Unsinn"?! Da hab ich einen falschen HTTP-Header genannt, na und? Jenk hätte den richigen schon nachschlagen können. Deinetwegen tu ich das jetzt: </selfhtml/tcbc.htm#a9>

        So, jetzt zufrieden? Wenn nicht, kannst du ja meinen Perl-Code korrigieren.

        1. Moin,

          ich suche ein kleines script, dass mir ein bild
          in einem zeitabstand immer wieder neu lädt.

          Dazu braucht's kein Javaskript.

          print header(

          [...]

          Bitte verbreite nicht solchen Unsinn.

          Was heißt hier "Unsinn"?!

          Es gibt keinen HTTP-Header, der dafuer sorgt, dass ein Bild in bestimmten Zeitabstaenden immer wieder laedt.
          Das heisst hier Unsinn.

          Viele Gruesse,

          n.d.p.