29. juni 2009 - 11:48Der er
22 kommentarer og 1 løsning
Hvordan kan man tjekke om billeder er loadede?
Jeg henter ca. 200 navne på billeder som skal sættes ind på en side. Dette gøres dynamisk, men for at gøre hastigheden højere bliver der sat en række mindre (i kb) billeder ind som skal skiftes til versioner med højere opløsning, når alle billederne så er loadet.. men hvordan kan jeg tjekke at alle billederne er blevet hentet inden jeg kører den funktion som skifter billederne ud?
Jeg ville bestemt ikke lade brugerne hente 400 billeder for at vise 200, så hellere lave det lidt asynkront, så den kun viser de billeder er der loaded, og et "loading" icon imens.
Undskyld, det gik lidt for stærkt, men I behøver ikke at være sarkastiske, og kommentar #3 er direkte dum. I må meget gerne korrigere, men gør det ordentligt klart og tydeligt, for ellers er der ikke nogen som bruge jeres kommentarer til noget.
@sw_red_6 det var vist en gammel proprietær standard jeg fik hevet frem der. Du må ud i complete attributten, billedelement.complete returnerer true når billedet er hentet.
Om det er en god ide at hente lav opløsnings versioner kommer an på det specifikke tilfælde. Uanset hvor små billederne er vil der altid blive tilføjet fast mængde ekstra spildtid, så hvis du har en stak små billeder bliver siden muligvis slet ikke hurtigere af at at lave mindre versioner.
Til tider kan der være adskillige sekunder at spare ved at smække alle billederne sammen i et billede og så "skille dem ad" på siden ved at sætte det samlede billede ind som div baggrund med forskellig placering alt efter hvilket billede der ønskes vist.
Vis os din side, så kan jeg nok svare lidt mere konkret på hvad den bedste løsning er.
.. jeg har givet et bud. og ti stille, er ikke noget der hører hjemme på et fora.
Det skal ikke løses med gammle obsolute attributter/events, men med moderne web2 teknologi. Som om du svarer i en 1990 netscape vs IE verden.... og derfor min fortvivlelse.
Ok, det var ihvertfald et svar, men vi skal vel egentlig også have indlæst de store billeder før udskiftningen. Vil du forsøge at gøre det uden brug af complete? Og hvordan?
Jeg vil vente med et endeligt svar til spørgsmålsstilleren har præciseret, specielt vil jeg gerne vide hvor store billederne er.
{ var img = new img(); imgs[i].src = "updating to highrez.gif"; /*preloading........*/ img.src = imgs[i].src.replace('lowrez', 'highrez'); /*Done*/ imgs[i].src = img.src;
}
Det er jo ikke en køb software for fiktive points side det her, men konkrete spørgsmål der skal besvares eller folk skal have hjælp til noget konkret, så jeg har ikke tid til at svare på flere af dine spm.
Spørger er velkommen, du kan bare oprette et spørgsmål hvis du har yderligere ebusisness.
hmm skulle måske præcisere.. Jeg henter navnene med ajax/json og billederne skal vises på en side. Problemet er at det tager for lang tid at loade alle billederne i deres oprindelige opløsning (min. 50KB pr. billede) så der er lavet en udgave med meget lavere opløsning (ca. 5KB pr. billede), disse billeder tager 1/10 af tiden at loade. Når de 200 små billeder er loadet skal de skiftes ud med de store billeder.
@splazz: der skal kunne vises op til 200 billeder på siden.
@jokkejensen: Det kunne måske være at det skulle laves med noget asynkron hentning, men hvordan skulle det gøres? og hvordan kan jeg være sikker på at 'loading'-billedet bliver loadet før jeg begynder at skifte src på alle elementerne? Det kan forresten ikke lade sig gøre at bruge window.onload eftersom elementerne bliver dynamisk oprettet efter siden er færdigloadet..
@ebusiness: Jeg kan ikke vise siden eftersom der er person-følsomme data på den. Desuden er billederne ikke noget som er/vil blive offentligt tilgængeligt. Det kan heller ikke lade sig gøre at lave et stort billede da det er billeder der bliver oploadet af brugerne selv.. mht. complete - hvis du kan komme med et link så jeg kan se hvor i standarden den er, vil jeg bestemt overveje det...
Jeg kan ikke lige finde noget der ligner en officiel standard noget sted som inkluderer complete, jeg kan heller ikke finde onload i forbindelse med img elementer. Men begge dele optræder i de facto standarden.
Hvilken standard bruger du jokkejensen? Jeg må indrømme, jeg kan ikke finde noget der ligner en komplet JavaScript standard som kan besvare spørgsmålet.
Standard ? - ECMA-262, men den bruger alle vist når vi taler JS. Den længe ventede nye version kommer jo først til jul "the fifth edition". ECMA bliver så afviklet af forskelle "engines", og derfor vil du opleve at ikke alle metoder og objecter fungerer ens:
Jeg har været igennem ECMA-262, og der står intet om DOM elementer og de tilhørende funktioner, ordet onload er ikke engang nævnt. Tilsyneladende er det kun en specifikation for basissproget.
Tjaa, new Image (det skal være med stort hvis der skal ske noget) er ikke nævnt i ECMA-262, så hvordan skulle jeg vide hvad det egentlig er for et objekt som opstår? Jeg kan blot konstatere at det tilsyneladende virker ligesom et DOM element, og kan indsættes i dokumentet som sådan.
Vi venter med at lave om på det indtil brugerne vender tilbage med en melding ang. hastigheden.
Jeg lukker spørgsmålet, hvis nogen af jer vil have point så kom med et svar..
Synes godt om
Ny brugerNybegynder
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.