molily: load-Event

Beitrag lesen

SElfHtml meint, onload gilt für <http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onload@title=<frameset> und <body>>

Stimmt nicht, gilt z.B. auch für iframe und img/Image-Objekte.

while ( !p591_img.complete )
  {
    for( i=0; i<100; i++ );
    if ( p591_img.onload ) alert ( "Bild ist da" );

Da hast du etwas grundsätzlich missverstanden: JavaScript funktioniert strikt asynchron. Es gibt kein »Warten«, wie man es aus anderen Programmiersprachen kennt - wenn du so etwas machst, würde der Browser einfrieren. So etwas wie for( i=0; i<100; i++ ); oder while (img.complete) {} ist in JavaScript Unsinn. Das kann man im Prinzip machen, führt aber nicht zum Erfolg und es gibt i.d.R. bessere Methoden.

JavaScript arbeitet mit Ereignissen und, wenn es um regelmäßige Abfragen geht, mit Timeouts und Intervallen. Ereignisverarbeitung ist etwas anderes als Abfrage von Eigenschaften. Man definiert eine Handler-Funktion, die beim Eintreten des Events ausgeführt wird.

http://de.selfhtml.org/javascript/objekte/event.htm#allgemeines
http://redaktion.selfhtml.org/selfhtml-preview/javascript/konzepte.html#events
http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#traditionelles-event-handling

if (img.complete) { // Falls das Bild schon im Browsercache liegt
   loaded();
} else { // ansonsten warte auf den load-Event
   img.onload = loadHandler;
}

Dazu die Handlerfunktion:

function loadHandler () {
  alert("Bild ist da!");
}

Mathias