[JS] Laden van foto annuleren

Pagina: 1
Acties:

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 15-02 07:09
Ik heb een fotoalbum gemaakt dat werkt op basis van een xml bestand.
In dat xml bestand staan de url's van de afbeeldingen. Deze url's worden in een array geplaatst.

Met behulp van de pijltoetsen haal ik dan een url uit die array en geef ik een divje op de pagina die url.
Hierna wordt de volgende foto en de vorige foto alvast gepreload.
Zie http://www.partypassion.net/new/Versuz/00052/foto-8288.html

Maar nu stuit ik op een probleem.
Wanneer je de pijltoetsen inhoud en dus zeg maar vlug van foto 1 naar foto 200 wilt springen worden alle 200 de foto's geladen en kan het dus nog wel even duren voordat je foto 200 ziet.

Is dit op de een of andere manier te voorkomen?

Hieronder de functie (spulletjes die niet van toepassing zijn heb ik even gestript
JavaScript:
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
function loadimage(idornum)
    {
    var total = images_id.length;
    // images_id is een array met de id's alle images
    // images_url is een array met de url's alle images
    
    if (imgnow == "undefined")
        {
        // Hiermee wordt het 1e plaatje, het beginplaatje opgespoort.
        // Kan afbeelding 1 zijn maar ook afbeelding 20.
        for (var i = 0; i < images_id.length; i++)
            {
            if (images_id[i] == idornum)
                {
                imgnow = i;
                document.getElementById('album_image').src = images_url[imgnow];
                break;
                }
            }
        }
    else
        {
        // Dit gaat van kracht wanneer het beginplaatje al is gevonden
        imgnow = idornum;       
        document.getElementById('album_image').src = images_url[imgnow];
        }
        
    imgbackward = imgnow-1;
    imgforward = imgnow+1;

    pre_for = new Image();
    pre_for.src = images_url[imgforward];
    pre_back = new Image();
    pre_back.src = images_url[imgbackward];
    }

  • Victor
  • Registratie: November 2003
  • Niet online
Misschien heel simpel gedacht, maar pas onkeyup gaan preloaden?

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 15-02 07:09
w8, zal meteen even mijn keyboard functie meeposten

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function keyboard(e)
    {
    if (navigator.appName == "Microsoft Internet Explorer")
        {
        var element = window.event.srcElement.name;
        var key = event.keyCode;
        }
    else
        {
        var element = e.target.name
        var key = e.which;
        }
    if (!element || element == 'image')
        {
        switch (key)
            {
            case 37:    if (document.getElementById("nav_backward"))    { document.location.href = document.getElementById("nav_backward").href; }  break;
            case 38:    if (document.getElementById("nav_index"))       { document.location.href = document.getElementById("nav_index").href; }     break;
            case 39:    if (document.getElementById("nav_forward"))     { document.location.href = document.getElementById("nav_forward").href; }   break;
            }
        }
    }

document.onkeydown = keyboard;


ik zal even wat gaan testen.
onkeyup is trouwens geen slecht idee...

[ Voor 102% gewijzigd door GewoonNico op 10-08-2006 16:36 ]


  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 15-02 07:09
Damn! Werkt soepel! Thanx

  • Victor
  • Registratie: November 2003
  • Niet online
Ik zou die browser(sn)if(f) vervangen door:
JavaScript:
1
2
if (!e) { e = window.event; }
if (!e.target) { e.target = e.srcElement }


En dit op deze manier voor alle properties die je maar nodig kunt hebben die voor IE anders zijn dan het W3C model. Een appName is niet altijd even betrouwbaar, en zo kun je door de rest van je script in ieder geval de juiste properties aanspreken (namelijk die uit het W3C model).