Preload, Afbeeldingen voorladen

artikel details Artikel details
In Artikels » js
Door BigSmoke
28-07-2008 16:18
Bron
js, http, afbeeldingen
share Share
Toevoegen aan eKudos Toevoegen aan NUjij Toevoegen aan Technorati Toevoegen aan Del.icio.us facebook E-mail naar een vriend Plaatsen/stemmen op MSN Reporter Blig it! Voeg toe op netjes.be
artikels Soortgelijke artikels
Volledig artikel Cheat Sheets
Volledig artikel Knoppen maken met css
Volledig artikel Website menu en navigatie


Adverteren bij Daisycon

High-resolution afbeeldingen op je website verbruiken heelwat bandwidth en je pagina's zullen langer laden. Maar gelukkig is er een manier om afbeeldingen sneller weer te geven, nl preloading.

Normaal gezien worden afbeeldingen in een browser pas geladen nadat het HTTP request verzonden is. Dus bij normale afbeeldingen via een IMG-tag en achtergronden is er geen probleem. Maar het probleem ligt bij rollovermenus. Een rollovermenu zijn afbeeldigen als menu-items en als we over een dergelijk menu-item gaan wordt er een andere afbeelding geladen, vaak met javascript. Maar die nieuwe afbeelding moet nog worden ingeladen. Waardoor we soms voor enkele seconden een leeg vlak zien. Dit valt vooral op als je een trage internetverbinden hebt of op smallband zit.

Tegenwoordig houden browsers een cache bij waardoor dat de volgende keer dat je de pagina laadt, de afbeeldingen wel perfect ziet. Maar dit mag natuurlijk de eerste keer ook niet gebeuren. We kunnen dit voorkomen door een onload event in de body tag de afbeeldingen te laden wanneer jij de pagina opent.


<html>
    <head>
        <script type="text/javascript">
        
        function preloader() {
             afbeeldingen = new Image();
             
             images = new Array();
             images[0]="menu-item-hover.jpg"
             images[1]="andere-afbeelding.jpg"
             images[2]="afb3.jpg"
             images[3]="afb4.jpg"
             
             var i = 0;
             for(i=0; i<=images.length; i++) {
                  afbeeldingen.src=images[i];
             }
        
        }
        
        </script>
    </head>
    <body onload="preloader();">
        <a href="#" onMouseOver="document.img01.src='menu-item-hover.jpg'">
        <img name="img01" src="menu-item-normaal.jpg"></a>
    </body>
</html>


Als de pagina geopent wordt, wordt via de het onload event de functie preloader uitgevoerd. Die functie zorgt ervoor dat de afbeeldingen die in de array staan op het zelfde moment geladen worden ... en dus al geladen zijn als ze opgeroepen worden in het rollovermenu.

Om meerdere afbeeldingen in de array te plaatsen, zet dan gewoon het volgende getal tussen de haakjes en de gewenste afbeelding tussen aanhalingstekens. Dus images[4]="nog-een-afb.jpg"

Dit script is in Javascript geschreven maar niet iedereen heeft javascript ingeschakeld. Daarom kun je ook de afbeeldingen die je wilt preloaden onderaan je pagina plaatsen in een IMG-tag en deze op style="display:none;" te zetten. Zodat ze niet getoond worden maar wel voorgeladen worden.


Er zijn nog geen reacties op dit artikel.
Om op dit artikel te reageren dient u een account aan te maken.


webhog