Avatar billede debugger Nybegynder
07. november 2001 - 15:39 Der er 6 kommentarer og
1 løsning

Image swapping

JEg har bikset et par funktioner sammen, der skulle foretage et såkaldr \"preload\" af nogle billeder, så man kan skifte dem øjeblikkeligt på en onMouseOver event:

    function preLoad()
    {
        var billeder = new Array(\'images/lalle.gif\',billede1.gif\',\'billede2.gif\');
       
        for(i = 0; i < billeder.length; i++)
        {
              var billede = new Image();
            billede.src = billeder[i];
        }
    }
       
    function shiftImage(filename)
    {
        shifting01.src = filename;
    }

På denne måde skulle billederne ligge sig i browseren cache, og man burde kunne lave noget ala: <A HREF=\"noget\" OnMouseOver=\"shiftImage(\'billede2.gif\')\" OnMouseOut=\"shiftImage(\'images/lalle.gif\')\"><IMG SRC=\"billede1.gif\" NAME=\"shifting01\"></A>


Problemet er, at den efter man har kørt musen henover en eller to gange, begynbder den at hente billederne fra websereren en gang mere. og igen hver 2, - 3. gang.

Se evt på http://www.euroceanique.com/new - der skulle fejlen fremgå (og koden kan ses)

(Måske oplever man det ikke på en 2mbit forbindelse ;o))

PS: Et hurtigt svar kunne være lækkert, men jeg ved godt, at problemet måske ikke liger er til at gennemskue/løse på 2 min
Avatar billede bamzen Nybegynder
07. november 2001 - 15:45 #1
hvis du bruger dhtml og lag, kan du bare gemme et billede i hvert lag, og så swappe visibility på det enkelte lag, på den måde har browseren ikke brug for cachen ;-)

(det var egentlig ikke et svar på hvad du spurgte om, men det var hurtigt og det vil virke)
Avatar billede jakoba Nybegynder
07. november 2001 - 16:23 #2
i din forløkke siger du
    var billede = new Image();
og det stopper så den forrige preload (\"næ vi skal ikke bruge det billede alligevel\")
Så det kommer der ikke meget preload ud af.

prøv istedet:
    for(i = 0; i < billeder.length; i++)
        {
            var temp = billeder[i];
            var billeder[i] = new Image();
            billeder[i].src = temp;
        }

så bliver dine preloadbilleder ikke smidt væk før de er hentet.

mvh JakobA
Avatar billede jakoba Nybegynder
07. november 2001 - 16:24 #3
Ups. der skal ikke stå var foran billeder[i]. blot:
            billeder[i] = new Image();
Avatar billede debugger Nybegynder
07. november 2001 - 16:26 #4
det er et imagemap.. jeg ved ikke om det kvalificerer som \"dhtnl og lag\"?
Avatar billede jakoba Nybegynder
07. november 2001 - 18:03 #5
net et imagemap er ren HTML.

men der svar jeg gav skal rettes. for hele arrayet billeder bliver jo smidt væk igen såsnart forløkken er kørt færdig, og længe før der har været tid til at preloade noget :(

<SCRIPT LANGUAGE=\"JavaScript\">
<!--
var billeder = new Array(\'images/lfrance.gif\',\'images/lespana.gif\',\'images/litalia.gif\',\'images/lportugal.gif\');
    function preLoad()
    {
        for(i = 0; i < billeder.length; i++)
        {
                        temp = billeder[i];
              var billeder[i] = new Image();
            billeder[i].src = temp;
        }
    } //her slutter funktionen og de variable den erklærede bliver smidt væk.
       
    function shiftImage(filename)
    {
        shifting01.src = filename;
    }
   
// -->
</SCRIPT>

mvh JakobA
Avatar billede debugger Nybegynder
08. november 2001 - 09:47 #6
selvom variablerne bliver smidt væk.. kan selve billededata vel godt være gemt i cachen?
Avatar billede debugger Nybegynder
08. november 2001 - 10:16 #7
Det ser dog ud til at vike fint, på denne, som jeg lavede for et stykke tid siden:

http://www.mn-interieur.dk/log/shop/case.htm

hvor jeg har lavet funktionen således:


<SCRIPT LANGUAGE=\"javascript\">
<!--
    function koerPreLoad()
    {
        var billeder = new Array(\'../../images/design.gif\',\'../../images/teknisk.gif\',\'../../images/produktion.gif\');
        load(billeder);
    }

    function load(billeder)
    {
        for(i = 0; i < billeder.length; i++)
        {
              var billede = new Image();
            billede.src = billeder[i];
        }
    }
       
    function shiftImage(filename)
    {
        shifting01.src = filename;
    }
// -->
</SCRIPT>

Jeg kan ikke se, at det skulle hjælpe at dele det op i 3 funktioner (og derfor smltede jeg de to første funktioner sammen)

Jeg tror jeg prøver denne metode på det andet site.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester