Lord-Sy: Preloader, mal eine andere frage

also leute, folgendes problem:

ich benutze einen ganz einfach preloader, der jetzt auch super funktioniert, nur habe ich dabei folgendes Problem

<script language="JavaScript">
var bild = new Array();
var datei = new Array("images/1.gif","images/2.gif","images/3.gif");

var p=0 //Prozent
var b=datei.length; // Anzahl der zu ladenden Bilder
for(i=0; i<=b; i++)
{
bild[i] = new Image();
bild[i].src = datei[i];
p= (i/b)*100;
window.status=i + " von " + b + " Bildern vorgeladen " + "[" + p + "%]";

}

</script>

der zeigt in der status zeile gleich die 100% an, obwohl er noch nicht fertig geladen hat. ich weiß schon, ein browser ladet nun mal nicht jedes bild fertig bis er beim nächsten anfangt, aber wie kann ich nun den status anpassen, also wie lässt es sich überprüfen ob das bild fertig geladen wurde um erst dann die prozente zu erhöhen

thx im vorraus

  1. Hallo,

    der zeigt in der status zeile gleich die 100% an, obwohl er noch nicht fertig geladen hat. ich weiß schon, ein browser ladet nun mal nicht jedes bild fertig bis er beim nächsten anfangt, aber wie kann ich nun den status anpassen, also wie lässt es sich überprüfen ob das bild fertig geladen wurde um erst dann die prozente zu erhöhen

    Probiere es so:

    if(bild[i].complete)
    {
      p=(i/b)*100;
      window.status=i + " von " + b + " Bildern vorgeladen " + "[" + p + "%]";
    }

    MfG, Thomas

  2. also leute, folgendes problem:

    ich benutze einen ganz einfach preloader, der jetzt auch super funktioniert, nur habe ich dabei folgendes Problem

    <script language="JavaScript">
    var bild = new Array();
    var datei = new Array("images/1.gif","images/2.gif","images/3.gif");

    var p=0 //Prozent
    var b=datei.length; // Anzahl der zu ladenden Bilder
    for(i=0; i<=b; i++)
    {
    bild[i] = new Image();
    bild[i].src = datei[i];
    p= (i/b)*100;
    window.status=i + " von " + b + " Bildern vorgeladen " + "[" + p + "%]";

    }

    Preloader sind die Pest!
    Sie tun etwas von dem ich nicht sicher bin ob ich es will und das nicht mal zuverlässig. Der browser kann das selber viel besser und wenn du das machst, weil deine Seite beim aufbauen so rumzapppelt (was sie nur im IE tut), dann hilft es dir schon weiter, wenn du die Größenangaben bei den Bildern im HTML Code machst.

    aber gut zu deiner Frage:

    du suchst den Onload event:

    bild[i] = new Image();
    bild.[i].onload = fertig;
    bild[i].src = datei[i];

    var counter = 0 ;
    function fertig()
    {
    p = parseInt(bild.length/counter *100);
    window.status= counter++ + " von " + bild.length + " Bildern vorgeladen " + "[" + p + "%]";
    }

    complete ist eine sehr unzuverlässige Eigenschaft, zumal, wenn die Datei nicht vorhanden ist (evtl. Tippfehler oder sowas) du damit nie zum Erfolg kommst.
    Dafür gibt es den onerror Event.

    Struppi.

    1. Hallo Struppi!

      »» Preloader sind die Pest!

      Jein...

      »» Sie tun etwas von dem ich nicht sicher bin ob ich es will und das nicht mal zuverlässig. Der browser kann das selber viel besser

      Ja.

      »» und wenn du das machst, weil deine Seite beim aufbauen so rumzapppelt (was sie nur im IE tut), dann hilft es dir schon weiter, wenn du die Größenangaben bei den Bildern im HTML Code machst.

      Ja.

      Aber: Man kann das auch machen, wenn man via onmouseover/out Bilder tauschen will. Da ist es viel schöner für den User, wenn die Austauschbilder schon geladen sind, bevor er mit der Maus über die sensitive Stelle geht. Und da spielt es keine Rolle, welcher Browser benutzt wird... Eine ältere Opera-Version (war das die 5.x?) zeigte sogar überhaupt nichts, wenn die Bilder nicht vorgeladen waren...

      Zum Doppelklickproblem schreibe ich später noch etwas ;-)

      Viele Grüße aus Frankfurt/Main,
      Patrick

      1. Hallo!

        »» <<< Das wird aus den Quote-Zeichen, wenn ich vom NT-Rechner am Arbeitsplatz poste...

        Zusätzlich kommt die im Betreff genannte Fehlermeldung. Beim nochmaligen Absenden wird das Posting angenommen.

        Viele Grüße aus Frankfurt/Main,
        Patrick