JavaScript skal preloade billeder

Tags:    html javascript

<< < 12 > >>
Jeg har noget javascript kode hvor det var meningen at nogle billeder skal indlæses før javascript koden udføres.

Hvis jeg besøger siden med koden er det ikke altid det virker, så hvis jeg genindlæser siden så kan det være det virker.

Jeg går ud fra det er fordi billederne ikke er indlæs før javascript koden går igen og skal bruge billederne.

Kan i fortælle mig hvordan man gør preloader billeder rigtigt fordi det her virker vist ikke.

Fold kodeboks ind/udJScript kode 




Indlæg senest redigeret d. 07.12.2011 01:47 af Bruger #13010
13 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 10 karma
Sorter efter stemmer Sorter efter dato
Svaret her:
http://stackoverflow.com/questions/5933230/javascript-image-onload

hvor du tilføjer en tæller og når tælleren når antallet af billeder kald tegn_scooter.



@scootergrisen, kompleks? Hvorfor ikke gøre det ordentligt og genbrugeligt. Ligesom så mange andre en-gangs-ting er JavaScript en-gangs-kode ikke det fedeste. Min kode er jo (udover det sidste hvor jeg laver et eksempel), bare et modul, du kan dumpe i et <script> tag og derefter bruge hvilket er JavaScript programmørers hellige gral :)

Du kalder aldrig window.onload, men du tildeler window.onload en funktion, som browseren sørger for at kalde.

Men ja, hvis du bruger et ordentligt eventsystem, som W3C's window.addEventListener, så kan du lytte til et event med ligeså mange listeners som du lyster.



Indlæg senest redigeret d. 14.12.2011 19:57 af Bruger #11328
Jeg siger nej tak! At tjekke hver x antal ms kan vidst ikke kaldes videre optimalt!

Havde ikke rigtig noget andet at lave, så jeg lavede en lille OOP løsning. Håber du kan bruge den :)
Fold kodeboks ind/udHTML kode 


Du kan også evt. indsætte dine billeder i <img> tags før window.onload, og så derefter lytte efter window.onload, som først vil blive "fired" når samtlige billeder er loadet.



Indlæg senest redigeret d. 14.12.2011 11:46 af Bruger #11328
Regner med det er den her kode du mener.
Fold kodeboks ind/udJScript kode 

Håber der er en lettere løsning en det.




Med jQuery

Fold kodeboks ind/udHTML kode 


jQuery extension, kan ikke huske kilde :/
Fold kodeboks ind/udJScript kode 


Brug:
Fold kodeboks ind/udJScript kode 



Husk at have noget client cache på billederne.



Jeg håber virkelig der er en mere simpel måde og jeg ønsker ikke at bruge jquery.
Det er også noget kode som skal vises hvordan man gør ting til andre så derfor skal det gerne være simpelt.

Hvad mener du med client cache ?



Det er også simpelt når du har sat det op. Det kan let genbruges, fremover skal du bare lave dit <div> med de ønskede billeder, og du har et event at arbejde med.

Mht til client cache, så sikre at brugeren ikke henter billederne hver gang han besøger din side, eller værre, ved hvert side skift.







Indlæg senest redigeret d. 09.12.2011 00:57 af Bruger #5789
Det var den jeg mente.

Synes da det er en rimelig simpel kode.

Erklære funktion der skal kaldes når loaded.
Opret billed.
Sæt onload handler
Sæt source
Tjek om billed var cached og hvis ja kald load handler.



Hvad siger i til denne løsning ?
Fold kodeboks ind/udJScript kode 




Indlæg senest redigeret d. 11.12.2011 01:16 af Bruger #13010
Du mister bare skalerbarheden/flexibiliten, den udfører sikkert jobbet korrekt, men hver gang du skal have tilføjet nogle billeder der skal preloades, skal de først tilføjes til din liste, og laves endnu flere conditions i din if sætning.

Hvis du tænker performance issues mht til konstant at spørge om billederne er loaded, bør du ikke bekymre dig.

Men igen, nogle vil gerne lave noget flexibelt/skalerbart/genbrugligt kode, mens andre bare hurtigt vil have en løsning.

Lav i det mindste et array til dine billede stier og løb det igennem.



<< < 12 > >>
t