Toon posts:

[Javascript] preload scriptje loopt oneindig uit..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,
mijn html pagina bestaat uit een aantal thumbnails van foto's
en als je op één van die klikt wordt deze vergroot weergegeven in een tabel.
Nu wil ik niet dat wanneer er op een foto geklikt wordt dat men de foto ziet laden..
incl. achtergrond v/d tabel. Het moet vloeiend gebeuren,

daarom volgende programmastructuur:
=> laadlayer weergeven
=> doe x aantal keren blokje bij progressbar tot dat foto volledig geladen is
=> verberg laadlayer
=> foto weergeven

(ik waarschuw jullie op voorhand dat de code die hieronder staat misschien niet al te conform is met jullie programmeergewoontes, nu ja ik ben nog maar een javascript beginner :s)

Ik moet dus nagaan of de afbeelding wel degelijk volledig geladen is dus
daarvoor gebruik ik:
object.complete.
maar met while ( !(imgObjs[id].complete) );
belandt ik steevast in een oneindige lus..

Heeft iemand raad hoe ik dit kan nagaan of mijn afbeelding volledig geladen is?
Bedankt alvast voor je tijd.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
var imgObjs = new Array(20);
var barLayer = null;
var percentLayer = null;
var statLayer = null;

function ChangeBgImage( Img )
{
    var Src = new String( Img );
    var id = Src.charAt( Src.length - 5 )
    Src = "img/atel"+ id + ".jpg";
    startLoading(Src,id);
}


function getLayer(layerID) {
if (document.getElementById)
    return document.getElementById(layerID);
else if (document.all)
    return document.all[layerID];
else
    return null;
}


function updateBar(Src,id) {
    imgObjs[id] = new Image();
    imgObjs[id].onload;
    imgObjs[id].src = Src;
    var c = 1;
    if ( !(imgObjs[id].onerror))
    {
        //do{
        //  barLayer.style.width = (c*3) +"px";
        //  percentLayer.innerHTML = "<font color=\"#BBBB00"><B>"+c+"%</B></font>";
        //  if( c < 90)
        //      c += 3;
        //} while ( !(imgObjs[id].complete) );

    }
        
        barLayer.style.width = (100*3) +"px";
        percentLayer.innerHTML = "<font color=\"#BBBB00\"><B>100%</B></font>";
    if(imgObjs[id].complete)
    done(id);
}

function startLoading(Src,id) {

    if (document.getElementById || document.all)
    {
        barLayer = getLayer("bar");
        percentLayer = getLayer("percent");
        statLayer = getLayer("stat");
        updateBar(Src,id);
    }
}


function done(id) {
    bgimage.background = imgObjs[id].src;
}

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 14:59

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

een functie maken die checkt of object.complete true is, en zoniet, een setTimeout naar dezelfde functie :)

code:
1
2
3
4
5
6
7
function objectComplete( obj ){
     if( document.images[obj].complete ){
          alert('\o/');
     } else {
          setTimeout("objectComplete("+obj+")", 10);
     }
}

hth :)

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Verwijderd

Topicstarter
ok thx voor je antwoord ;)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:29

crisp

Devver

Pixelated

een image heeft trouwens ook een onload event ;)

Intentionally left blank