setTimeout funktioniert nicht bei FF, jedoch bei IE

  • Hallo Forum,

    Dieser Script funktioniert nicht im FF 1.5.0.8, jedoch im IE 6.0.2900.
    Der Script soll aller 30s ein Bild neu laden.

    function bild() {
    document.bild.src = "bild.jpg";
    setTimeout("bild()", 30000);
    }

    Was ist falsch? Wie kann man das Problem lösen?

    Thomas

  • Hi Thomas1620,

    zunächst einmal: "Willkommen hier im Forum!", soviel Zeit muss sein :wink:

    setTimeout() ist keine Objektunabhängige Funktion (Link) sondern eine an ein Objekt gebundene Objektmethode (Link). Du musst daher das Objekt angeben - in diesem Falle "window" - auf die du die Methode setTimeout() (Link) anwendest:

    Code
    function bild() {
    document.bild.src = "bild.jpg";
    window.setTimeout("bild()", 30000);
    }


    Warum der IE deinen nicht Standard konformen Code dennoch so interpretiert wie gewünscht, musst du die Leute aus Redmond fragen :wink:

    Have fun,
    NightHawk

  • Zitat von NightHawk56

    Warum der IE deinen nicht Standard konformen Code dennoch so interpretiert wie gewünscht, musst du die Leute aus Redmond fragen :wink:

    Erstens gibt es keinen Standard, der window oder setTimeout definiert. Zweitens ist es bei JEDEM Browser, der JavaScript kann, so, dass "window" ausgelassen werden kann und automatisch ergänzt wird.

    Daran kann also eigentlich nicht liegen, Thomas. Ich schlage vor, du schaust in der JavaScript-Konsole nach Fehlern auf deiner Seite. Wenn du es damit noch nicht schaffst, wäre ein Link zu einer Seite, auf der das Problem auftritt sicher hilfreich. Das Beispiel alleine ist soweit nämlich korrekt.

  • Hallo Forum,

    danke erstmal für die vielen Hinweise, leider sind diese noch ohne Erfolg.

    1: "setTimeout("bild()", 30000);" -> "window.setTimeout("bild()", 30000);" geändert -> keine Veränderung

    2: "document.getElementById("bild").src" dies ist nicht erforderlich, denn "document.bild.src" funktioniert sehr gut

    3: Hier der Link auf die Seite http://www.webcamtegernsee.de/haupt.html bzw. http://www.webcamtegernsee.de

    Für weitere Hinweise bin sehr dankbar.

    Thomas

  • Eine Traumkamera. Das Ding ist doch bissl teuer für ne webcam ;)
    Bin mal auf die Aufnahmen am Tag gespannt...

    Mach Folgendes:
    Lade nicht per Script ein neues Bild, sondern lass die komplette Seite neu laden. Dabei wird auch das Bild neu geladen und nicht von der Cache.

    Also in bildmega.html diesen Code einfügen:

    Code
    <meta http-equiv="refresh" content="60; URL=http://www.webcamtegernsee.de/bildmega.html">


    Funktioniert dann ohne JavaScript. 60 ist die Zeit in Sekunden.

    Code
    <script type="text/javascript">
          function re_load() {
            window.document.location.reload();
          }
          setTimeout("re_load()",60000);
        </script>


    Das ist mit JavaScript. 60000 ist 60sek. * 100

    Wo die hin kommen muss ich dir ja nicht sagen.
    Kannst würfeln welches du nehmen willst. Das Erstere ist besser da kein JS benötigt wird. Habs aber noch nie getestet.

  • Hallo Lord-Ali,

    Danke für deinen Tip

    Code
    meta http-equiv="refresh" content="60; URL=http://www.webcamtegernsee.de/bildmega.html"


    Damit habe ich mein Ziel erreicht.

    "..Das Ding ist doch bissl teuer für ne webcam.." naja beim Hobby schaut man nicht so genau auf den Euro ;)

    Thomas