marcusx: body onload event extern registrieren, nicht window.onload

Hallo Leute!

Ich würde gerne ein Script (geladenen Inhalt anzeigen, Ladegrafik verstecken) ausführen lassen nachdem eine größere Anzahl von Bildern in die Seite nachgeladen wurden.

Das funktioniert auch wunderbar wenn ich den onload event des Body Tags verwende.

  
<body onload="showContent();">  

Ich will das da aber nicht haben. Sondern in meinem .js File einen listener verwenden.
Ungefär so

  
window.onload = showContent();  

Das geht aber viel zu früh los. Und die Grafiken sind noch gar nich komplett geladen.

Ich dachte zwar immer das ist derselbe event aber dem ist wohl nicht so. (body.onload gibts meines wissens nicht)

Was für einen Listener muss ich nehmen, der wirklich erst fired wenn unten im Browser der Ladebalken komplett weg ist (alle Bilder geladen)??

Vielen Dank!
vg
marcus

  1. Hallo,

    Das funktioniert auch wunderbar wenn ich den onload event des Body Tags verwende.

    <body onload="showContent();">

    
    >   
    > Ich will das da aber nicht haben. Sondern in meinem .js File einen listener verwenden.  
    > Ungefär so  
    >   
    > ~~~javascript
      
    
    > window.onload = showContent();  
    > 
    
    

    Das geht aber viel zu früh los. Und die Grafiken sind noch gar nich komplett geladen.

    Das geht deswegen zu früh los, weil Du es falsch notierst. Deine Programmzeile führt die Funktion showContent() aus, sobald das Script geparst wird und weist den Rückgabewert der Funktion showContent() als Eventhändler window.onload zu.

    Du willst aber, dass beim Parsen des Scriptes die Referenz zur Funktion showContent() als Eventhändler window.onload zugewiesen wird, damit bei Eintreffen des Events window.onload dann diese Funktion ausgefüht wird.

    Das wäre:

      
    window.onload = showContent;  
    
    

    viele Grüße

    Axel

  2. window.onload = showContent();

    
    >   
    > Das geht aber viel zu früh los. Und die Grafiken sind noch gar nich komplett geladen.  
      
    Noch eine Ergänzung, damit man das noch besser verstehe.  
    Du könntest z.b. in deiner Funktion showContent auch eine Funktionsreferenz zurück geben, dann funktioniert das so, wie du es geschreiben hast.  
      
    ~~~javascript
    function showContent() {  
       return function() {  
          alert('fertig');  
       };  
    }
    

    Oder was auch geht, ist eine anonyme Funktion, z.b. wenn deine Funktion noch Parameter braucht.

    window.onload = function () {  
       showContent('Parameter');  
    };  
    }
    

    Struppi.

  3. Lieber marcusx,

    als Ergänzung zu dem, was meine beiden Vorgänger bereits geschrieben haben, sei Dir dieser (noch in der Bearbeitung befindliche) Artikel empfohlen, der sich auch mit dem Autostart von JavaScripten beschäftigt.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)