HintergrundBilder vorladen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HintergrundBilder vorladen

    Hallo,

    ich habe mir eine Bilder-Vorladefunktion geschrieben, die - wie der Name schon sagt - Bilder (img) vorläd. Erst wenn alle Bilder geladen sind, wird die Seite gerendert.
    Scheint ja bei mir langsam typisch zu werden, dass ein Browsertyp dies ohne Probleme macht, und ein anderer mal wieder nicht. Da ich keine Ahnung habe wie man Hintergrundbilder vorladen kann, denk ich mir, dass es doch auch damit getan sein muss, dass ich diese Hintergrundbilder als <img> vorlade - beim Firefox geht diese Rechnung auch auf, der IE hingegen läd jedes der wiederkehrenden Bilder einzeln nach.

    Hat jemand eine Idee wie man dem IE verklickern kann, dass er die Hintergrundbilder vorladen soll um sie dann gemeinsam anzuzeigen?

  • #2
    Ich weiß zwar nicht ob das folgende Script auch beim IE funktionierte, habe grad keine Lust es zu testen xD, aber du kannst es ja mal ausprobieren.

    <head>
    <script language="JavaScript" type="text/javascript">
    function loadImages() {
    if (document.getElementById) {
    document.getElementById('hidepage').style.visibility = 'hidden';
    document.getElementById('pageganz').style.display = 'block';
    }
    else {
    if (document.layers) {
    document.hidepage.visibility = 'hidden';
    document.pageganz.display = 'block';
    }
    else {
    document.all.hidepage.style.visibility = 'hidden';
    document.all.pageganz.style.display = 'block';
    }
    }
    }
    </script>
    </head>

    <body OnLoad="loadImages()">
    <div id="hidepage" style="position: absolute; left:0px; top:0px; background-color: #1F1F1F; layer-background-color: #1F1F1F; height: 100%; width: 100%;">

    <table width="100%" style="height:100%;" align="center">
    <tr>
    <td valign="middle" align="center">Loading ...</td>
    </tr>
    </table>
    <div style="display:none;">
    <img src="image1.png" alt=""> // Hier kommen deine Bilder hin die du vorladen willst
    <img src="image2.png" alt="">
    <img src="image3.png" alt="">
    ...
    </div>
    </div>
    <div id="pageganz" style="display:none;">
    // Dieses div-Element umschließt deine eigentliche Page
    </div>
    </body>

    mfg />flashed

    Kommentar


    • #3
      Die Idee mit der visibility ist echt gut, nur irgendwie kriege ich nicht heraus wann ein _Hintergrundbild_ im IE fertig geladen worden ist - onComplete z.B. scheint da auch net wirklich weiterzuhelfen (beim Firefox klappt es mit onComplete, weil es erst dann getriggert wird, wenn die Bilder auch wirklich geladen sind. Der IE hingegen feuert wohl das Event wenn das umgebene <div> fertig ist - egal ob der Hintergund rdy ist.).

      So nu erstmal Fussball!
      Zuletzt geändert von Jesseblue; 14.06.2006, 20:02.

      Kommentar


      • #4
        Original geschrieben von flashed
        <body OnLoad="loadImages()">
        Mit dem Befehl OnLoad werden die Bilder im div-Element schon vorgeladen und dieses div wird erst ausgeblendet nach dem alle Bilder geladen sind, sodass die Bilder in der foldenden page sofort angezeigt werden.
        Ich habe es gerade noch mal getestet und es funktioniert mit IE, Mozilla, Opera und Netscape einwandfrei.

        Kommentar


        • #5
          Hab den Code auch mal ausgetestet, und - ja er klappt einwandfrei. Ich benutze für mein kleines Projekt aber durch JS generierte HTML-Konstrukte und hier fangen die Probleme an. Denn Firefox und IE verhalten sich irgendwie grundsätzlich anders, der Eine muss Objekte erst rendern damit man damit diverse Dinge anstellen kann, beim Anderen reicht es wenn man einfach das Objekt erstellt.

          Naja, ich gehe so ähnlich vor wie bei deinem Script. Erst die Bilder einlesen, dann unsichtbar an den <body> packen und dann _sollten_ die Bilder vorgeladen sein -> beim Firefox ist dem auch so.
          Der IE läd die Bilder auch vor, läd dann aber jedes der wiederverwendeten Bilder nochmals! Sprich, ich habe ein <img> mehrmals als Hintergrundbild und der läd jede Kopie davon erneut vom Server, obwohl es doch im Cache liegt?!?

          Ach, ich könnt ... -.-
          Gibt es vieleicht ne Möglichkeit wie man mittels JS einem background-image ein <img>-Objekt übergibt, anstatt eine URL?

          Thx...

          Zuletzt geändert von Jesseblue; 16.06.2006, 08:20.

          Kommentar


          • #6
            Dass das Caching im IE alles andere als optimal gelöst ist, ist altbekannt.
            Da hilft allerhöchstens, dass du auf deinem Rechner die Einstellungen anpasst.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar

            Lädt...
            X