Bastian: Bilder "preloaden"

Hallo,

ich möchte einige animierte gifs "preloaden" - wie auch immer der deutsche Ausdruck dafür heißt - damit sie bei einem Mouse-Roll-Over schneller geladen werden. Mein Quelltext sieht genauso aus wie in den unzähligen Beispielen im Netz, aber es funktioniert einfach nicht !

Konkret:
www.worldofskiing.de/index3.html ist die Seite ohne Preload-Funktion.
www.worldofskiing.de/index4.html ist die Seite mit Preload-Funktion, die aber nicht funktioniert.
Woran kann das liegen ?

Ganz nebenbei: Die animierten Gifs sollten eigentlich nur einmal ablaufen, was sie auch tun, wenn ich sie mir im Windows-Explorer anschaue. In Firefox oder IE laufen die Gifs aber komischerweise zweimal ab. Kann ich etwas dagegen tun ? Ist das vielleicht das gleiche Problem wie in Powerpoint, in dem animierte Gifs sich auch gerne etwas anders benehmen ?

Danke für eure Antworten.

Bastian

  1. Hi,

    Woran kann das liegen ?

    warum schaust Du nicht selbst in die Javascript-Konsole?
    Und was soll

    onload="preloadimages("

    ?

    freundliche Grüße
    Ingo

  2. Hallo

    Woran kann das liegen ?

    Da kann ich leider nicht helfen das ich die preload-Scripte dei ich früher benutzt habe nie verstanden habe :) und sowas heute nicht mehr einsetze.

    Ganz nebenbei: Die animierten Gifs sollten eigentlich nur einmal ablaufen, was sie auch tun, wenn ich sie mir im Windows-Explorer anschaue. In Firefox oder IE laufen die Gifs aber komischerweise zweimal ab. Kann ich etwas dagegen tun ? Ist das vielleicht das gleiche Problem wie in Powerpoint, in dem animierte Gifs sich auch gerne etwas anders benehmen ?

    Das Problem gibt es seit ich HTML kenne. Ich weiß keine Lösung. Da macht jeder Browser was er will. Als Webseitenersteller hat man darauf keinen Einfluß. Ein Bild ist ein Bild, ob animiert oder nicht, man hat keine Möglichkeit in HTML diese zu steuern. Im Fall Deiner Seite müsste der user allerdings ewig den Mouseover ausführen um es 2x zu sehen. Was vielleicht abhilfe schafft (zumindest bei den kürzen Movies,  sidn ja teilwese sehr lang!) vorwärts und rückwärts loopen, dann ist es weniger unschön wenn es ein weiteres mal läuft.

    1. <body onload="preloadimages("Laufen.gif","Frontflip.gif","Abfahrt.gif","Slides.gif");">

      Ich vermute Javascript kommt hier mit den "" durcheinander!

      Bin etwas eingerostet mit JavaScript

      <body onload="preloadimages('Laufen.gif','Frontflip.gif','Abfahrt.gif','Slides.gif');">

      aber sowas in der Art solte abhilfe schaffen.

  3. Ich habe die " bei den Parametern von preloadimages korrigiert, d.h. durch ' ersetzt (ich bin von PHP einfach gewohnt, dass das beides das gleiche ist), wie ihr beide mir geraten habt. Leider funktioniert das preloaden immer noch nicht.

    Immerhin habe ich jetzt aber keine Probleme mehr mit der Loop-Zahl der gifs. Nach Bearbeitung der Gifs im x-ten Programm steht der Zähler jetzt anscheinend wirklich auf 1.

    Bastian

    1. Hi,

      Ich habe die " bei den Parametern von preloadimages korrigiert, d.h. durch ' ersetzt (ich bin von PHP einfach gewohnt, dass das beides das gleiche ist)

      dann hast Du dort entweder keine soldch fehlerhafte Verschachtelung erzeugt oder error_reporting deaktiviert. Und das gleiche ist es in PHP noch weniger als in Javascript.

      Leider funktioniert das preloaden immer noch nicht.

      kein Wunder, wenn Du den Javascript-Fehler, den Dir Deine Javascript-Konsole zumindest im Firefox meldet, weiterhin ignorierst.

      freundliche Grüße
      Ingo

    2. Hallo Bastian,

      Ich habe die " bei den Parametern von preloadimages korrigiert, d.h. durch ' ersetzt (ich bin von PHP einfach gewohnt, dass das beides das gleiche ist), wie ihr beide mir geraten habt.

      du irrst dich, es ist gerade andersrum: *Gerade* in PHP ist es eben *nicht* das gleiche! Dafür ist die Verwendung von einfachen oder doppelten Anführungszeichen in Javascript oder HTML absolut gleichwertig. Nur wenn man sie verschachtelt, muss man entweder unterschiedliche Ausführungen nehmen oder sie maskieren.

      Leider funktioniert das preloaden immer noch nicht.

      Ja, das wundert mich nicht. Du verwendest nämlich das vordefinierte images-Array von Javascript, um deine eigenen vorausgeladenen Bilder zu speichern. Das geht bös ins Auge, weil du in einem Array rumschreibst, mit dem Javascript intern auch selbst arbeitet. Nenn dein Array mal lieber anders!

      Übrigens ist die Syntax, mit der du auf die im Dokument vorhandenen Bilder zugreifst, auch etwas, hmm, fragwürdig. In msout() greifst du direkt über den Bildnamen auf das Bildobjekt zu:
        Laufen.src = "Laufen.jpg";
      Ich bin mir nicht sicher, ob das wirklich in allen Browsern zuverlässig funktioniert; sicherer wäre
        images['Laufen'].src = "Laufen.jpg";
      natürlich nachdem du dein eigenes images-Array umbenannt hast.
      In der Funktion msover() ist es im Prinzip dasselbe. Anstatt
        document.['Laufen'].src = images[id-1];
      würde ich eher
        images.['Laufen'] = preloadedimages[id-1];
      empfehlen. Wobei ich mich sowieso frage, warum du die zwei Bildersätze unterschiedlich verwendest: Einmal greifst du über den Namen zu, das andere Mal direkt über die Objektreferenz.
      Ach ja, und warum machst du es dir so umständlich, die ganze Zeit über [id-1] zu indizieren, anstatt gleich die passenden Werte 0..3 zu übergeben?

      Immerhin habe ich jetzt aber keine Probleme mehr mit der Loop-Zahl der gifs. Nach Bearbeitung der Gifs im x-ten Programm steht der Zähler jetzt anscheinend wirklich auf 1.

      Immerhin.  ;-)

      Schönen Sonntag noch,
       Martin

      --
      Ungeschehene Ereignisse können einen katastrophalen Mangel an Folgen nach sich ziehen.
        (Unbekannter Politiker)