[JavaScript] Preloader Frage

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

  • [JavaScript] Preloader Frage

    Also, hab durch suchen usw mir n paar kentnnise angeignet, die ich nicht mag, die hab dann verworfen und es selber gelöst.
    Hier ist ein Script, das relativ leicht verständlich sein sollte


    Code:
    <script type="text/javascript">
    <!-- versteckt
    var hrefAfterLoad = "http://www.beispiel.de/index.html"
    var preloaderLenght = 400;
    var loadBarNameID = "barpic";
    var Pictures = new Array(
    "http://www.test.de/main_picture_01.jpg",
    "http://www.test.de/main_picture_02.jpg",
    "http://www.test.de/main_picture_03.jpg",
    "http://www.test.de/main_picture_04.jpg",
    "http://www.test.de/main_picture_05.jpg",
    "http://www.test.de/main_picture_06.jpg",
    "http://www.test.de/main_picture_07.jpg",
    "http://www.test.de/main_picture_08.jpg",
    "http://www.test.de/main_picture_09.jpg",
    "http://www.test.de/main_picture_10.jpg",
    "http://www.test.de/main_picture_11.jpg",
    "http://www.test.de/main_picture_12.jpg",
    "http://www.test.de/main_picture_13.jpg",
    "http://www.test.de/main_picture_14.jpg",
    "http://www.test.de/main_picture_15.jpg"
    );
    
    function preloader(){
    //Set loadBar to 1 px
    document.getElementById(loadBarNameID).width=1;
    if (!document.preImages) {preImages = new Array(); addition=Math.floor(preloaderLenght/Pictures.length);}
    loadpics();
    }
    
    function loadpics(){
      for (i = 0; i < Pictures.length; i++) {
      preImages[i] = new Image();
      preImages[i].src = Pictures[i];
      }
    check(0);
    }
    
    function check(done){
     for (i = 0; i < preImages.length; i++) {
       if (preImages[i].complete) {
         document.getElementById(loadBarNameID).width=document.getElementById(loadBarNameID).width+addition;
    	 if (done<preImages.length){
    	 done++;
    	 }
    	}
     
     }
      check(done);     
    }
    </script>
    Erster Teil ist klar, bilder array, name des bildes, mit dem der preloader arbeitet.
    Setzt ihn auf null breite, berechnet den zuwachs pro preloading stufe usw.

    function loadpics ist das array, was vollgeballert wird zum laden, mit dsl ist das n blöder test, da ich davon mal garnichts merke, aber egal.Dann: check(0) ist ein aufruf einer funktion, die rekursiv ausgeführt wird.
    Das is der hacken.
    1. Ich weiß nicht,wie ich das aufrufen am ende,also check(done) unterbinden könnte, ich hab probiert, die if abfrage, ob done<length ist, nach unten zu setzen, aber das funzt nicht.

    Das größte Problem ist, aber (rest funzt eigentlich), dass beim starten des preloaders zwar keine direkte Fehlermeldung kommt, dafür aber ein alert mit der Meldung: Out of memory: line xx
    die Zeile ist: if (preImages[i].complete)

    und das verstehe ich beim besten willen nicht, wie kann da was out of memory sein? das i ist doch nur ne for schleife von 0 bis 14, wie soll da was out of memory gelangen.
    Und hier was ganz blödes, wenn ich unter diese abfrage ein alert(done); mache, funktioniert alles einwandfrei
    Warum? Es kommt keine memory error meldung mehr, natürlich stört dann mein alert gewaltig, aber dann ist es weg.
    Woran zum henker liegt das?


    Nachtrag; wie beendet man eine funktion eigentlich, ohne dass der rest weiter ausgeführt wird? Also mit return klappts nicht, es kommt immer die fehler meldung
    SQL Injection kitteh is...

  • #2
    if (done<preImages.length)
    check(done);

    so?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      nej, funzt nicht, hab den fehler gefunden, setTimeout, ohne die verzögerung von 10 millisec, entsteht ein echo, irgendwie kommt sich die funktion selbst in die quere und killt sich
      SQL Injection kitteh is...

      Kommentar

      Lädt...
      X