Avatar billede t_skytte Nybegynder
25. april 2002 - 01:32 Der er 11 kommentarer og
1 løsning

Mit website loader dårligt

Jeg er igang med et website, som desværre loader utrolig dårligt. Billederne kommer stille og roligt et ad gangen, hvilket i mit tilfælde er meget dårligt.
Jeg har prøvet at forebygge dette med et javascript, som skal loade billederne, før siden vises.
Funktionen der loader, se således ud:

function MM_preloadImages() {
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}

Med funktionen loader jeg billederne i body:

<BODY onLoad="MM_preloadImages('./images/billede1.gif','./images/billede2.gif',...)">

Det virker ikke, og jeg kan ikke lige udmiddelbart finde ud af, hvordan man ellers gør. Håber der er klogt hovede, der hjælpe lidt :)

Thomas



Avatar billede keysersoze Guru
25. april 2002 - 01:37 #1
at preloade billederne vil jo ikke gøre siden hurtigere - derimod vil brugerne få en lang og unødig ventetid...

det mest optimale at gøre er at skære ned i antallel af billeder hvis du har mange, og så selvfølgelig det mest primære; optimér dine billeder til at fylde mindst muligt - det glemmer mange!

har du evt et link vi kan se?
Avatar billede =maddog= Nybegynder
25. april 2002 - 08:17 #2
onload event'et bliver først kaldt når hele siden er loaded. kan du have glemt at slette billedreferencen i <IMG> tagsene??
Avatar billede t_skytte Nybegynder
25. april 2002 - 11:58 #3
Svar til keysersoze:
Tro mig, der er skåret ned i billederne. Mange af dem er optimeret gif-filer, og jeg har så vidt muligt brugt baggrundsfarver på tables el.lign. for at spare på resourcerne. De billeder, der er blevet brugt, er yderst nødvendige og skal med. Siden tager heller ikke lang tid at loade, men det at billerne loader et ad gangen ødelægger utrolig meget.

svar til =maddog= :
Jeg er ikke helt med. Må referenser til billerne ikke være inkluderet i <IMG>. Hvordan laves det så? Når jeg refererer til billederne, sker det således:

<IMG src="./billede1.gif">

<IMG> har vel brug for sin reference, eller hvad?
Avatar billede =maddog= Nybegynder
25. april 2002 - 12:46 #4
Der her vi problemet. Ser du når browseren læser HTML koden gør den sådan her
<BODY> <- Browser tænker: AHA, nu begynder siden.
<IMG src="etellerandet.gif"> <- Browser tænker: AHA, her er et billede. Det downloader jeg.
</BODY> <- Browser tænker: OK, nu er siden færdig. Nu kan jeg udføre onload.
Du får altså ikke noget for pengene hvis dine IMG's indeholder referencer.
En måde at gøre det på kunne være nedenstående. Håber det er klart nok.
<html><head><script LANGUAGE="javascript">
var pics = new Array("metal.gif","left.gif", "Attempt.gif");
var loadPics = new Array();
function loadImg() {
for (i=0;i!=pics.length;i++) { // først loader vi billederne
  loadPics[i] = new Image()
  loadPics[i].src = pics[i]
}
for (i=0;i!=document.images.length;i++) {
  if (i >= pics.length) { alert('der er for få filnavne!!'); return false;}
  document.images[i].src = loadPics[i].src // så sætter vi dem ind
}
}
</script></head><body onload="loadImg();">
<img alt="metal.gif">
<img alt="left.gif">
<img alt="Attempt.gif">
</body></html>
Avatar billede gryn Nybegynder
25. april 2002 - 13:09 #5
http://www.dhtmlcentral.com/script/script.asp?id=17

Her er en flot preload, som er forholdsvis let at konfigurere.

www.fotx.net/gryn
Avatar billede =maddog= Nybegynder
25. april 2002 - 13:25 #6
ok, gryn jeg tror det er at skyde gråspurve med kanoner det der. men hvis det virker.....
Avatar billede t_skytte Nybegynder
25. april 2002 - 20:29 #7
Det holder ikke! At sætte en hvid ugennemsigtig forgrund med en statusbar på indtil alle billederne er loaded, er ikke lige det jeg har brug for. Forstil dig, hvordan det ser ud, når hvert eneste subsite skal loades på den måde! Desuden skal denne forgrunds dimension begrænses med bredde og højte, og da mine subsites tager form efter en databasesøgning dvs. en udefinerbar størrelse, så vil dele af sitet være dækket er forgrunden og andre ikke!
Det mit spørgsmål lå i, var hvordan man loader billederne på sit site før sitet vises i browsweren. Min egen udgave skulle kunne klare det, men der er åbenbart nogle fejl, jeg ikke har taget højde for.
Avatar billede =maddog= Nybegynder
25. april 2002 - 20:38 #8
jamen onload bliver først exekveret når browseren når </body> tagget. det du vil have er at billederne loades i en cache før siden vises og det må jeg vist desværre strække våben overfor.
jeg ser problemet men jeg kan ikke se løsningen. beklager at have spildt din tid :-(.
Avatar billede =maddog= Nybegynder
25. april 2002 - 20:44 #9
der er en ret dum og forkvaklet løsning som jeg helt skammer mig over at foreslå. I stedet for at skrive siden i ren HTML kan du først kalde din cache funktion og så skrive resten af siden med document.write(). JavaScript udføre sekventielt så intet bliver skrevet før cachen er fyldt.
Avatar billede keysersoze Guru
25. april 2002 - 22:10 #10
se på www.soze.dk/nimrod - der preloades billederne inden den egentlige side kommer... men igen; smag og behag
Avatar billede t_skytte Nybegynder
26. april 2002 - 01:03 #11
Det er så ikke lige sådan noget jeg er ude efter! Og forøvrigt tak for forslaget! Jeg vil bare have en gangske almindelig preloade funktion, der ikke laver alt muligt smart med at dække siden med en statusbar+baggrund indtil billederne er loaded. Jeg ved det kan lade sig gøre, for jeg har lavet det før ... for et par år siden. Men dårlig husker!
Avatar billede keysersoze Guru
26. april 2002 - 01:15 #12
du kan jo bare lave sådan noget lignende så;

<html>
<head>
<script language="Javascript">
<!--

billede1 = new Image()
billede1.src = 'skod.gif'
billede2 = new Image()
billede2.src = 'skod2.gif'

// osv...

// -->
</script>
</head>
<body onload="document.location.href = 'NÆSTESIDE.HTML'">

</body>
</html>
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