Avatar billede newbie.dk Praktikant
27. oktober 2008 - 18:36 Der er 11 kommentarer og
1 løsning

Vise et billede mens preloader

Jeg har lavet fået lavet et lille fint slideshow på min side. Det virker meget godt. Men da mine billeder fylder en del tager det lang lang tid før det starter.

Kan man lave det så der vises ét billede mens de andre billeder preloades?

Herunder kan i se koden:

<script type="text/javascript">
    function rndSort(){
    return Math.round(Math.random())-0.5
}
var slideShowSpeed = 7000
var crossFadeDuration = 5
var Pic = new Array()


Pic[0] = '0.jpg'
Pic[1] = '1.jpg'
Pic[2] = '2.jpg'
Pic[3] = '3.jpg'
Pic[4] = '4.jpg'
Pic[5] = '5.jpg'
Pic[6] = '6.jpg'
Pic[7] = '7.jpg'
Pic[8] = '8.jpg'
Pic[9] = '9.jpg'


Pic.sort(rndSort);
var t
var j = 0
var p = Pic.length

var preLoad = new Array()
for (i = 0; i < p; i++){
  preLoad[i] = new Image()
  preLoad[i].src = Pic[i]
}

function runSlideShow(){
  if (document.all){
      document.images.SlideShow.style.filter="blendTrans(duration=2)"
      document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
      document.images.SlideShow.filters.blendTrans.Apply()     
  }
  document.images.SlideShow.src = preLoad[j].src
  if (document.all){
      document.images.SlideShow.filters.blendTrans.Play()
  }
  j = j + 1
  if (j > (p-1)) j=0
  t = setTimeout('runSlideShow()', slideShowSpeed)
}
</script>

</head>

<body onload="runSlideShow()">

<div align="center">
    <table border="0" width="944" cellspacing="0" cellpadding="0" id="table2">
        <tr>
            <td>
            <img src="blank.gif" width="944" height="250" name="SlideShow" /></td>
        </tr>
    </table>
Avatar billede jokkejensen Novice
27. oktober 2008 - 19:00 #1
<img src="Det første billde.jpg" width="944" height="250" name="SlideShow" /></td>
Avatar billede newbie.dk Praktikant
27. oktober 2008 - 20:20 #2
Nej, den havde jeg desværre prøvet.
Det er ligsom at billedet, "Det første billde.jpg" først kommer efter 3/4 af tiden. Altså der er et godt stykke tid inden det første billede kommer til syne, derefter går der et lille stykke tid også er hele siden loadet.
Avatar billede Slettet bruger
27. oktober 2008 - 21:48 #3
Placér billedet øverst i koden i body-delen før alt andet.

  // Steeven
Avatar billede ssv Nybegynder
27. oktober 2008 - 22:34 #4
Hvad med at vise et load-ikon ;-)?

<td style="background: url(http://www.ajaxload.info/cache/ff/ff/ff/45/45/45/2-0.gif) no-repeat center center;">
Avatar billede newbie.dk Praktikant
27. oktober 2008 - 22:50 #5
Ssv, ja det ville være fint med et load-billede. Men det går nok ikke bare at skifte det nuværende billede ud med et load-billede, da load-billede først vil komme næsten sidst i indlæsningen. Men ellers en fin side - den kunne jeg måske bruge hvis vi får det andet til at virke.

Steeven, det er næsten det øverst. Har kun en lille include på ca. 2kb, før billedet. Mine billeder som indgår i preloaden fylder næsten 4MB tilsammen, så det er ret meget.

Hvad kan man ellers prøve?
Avatar billede olebole Juniormester
27. oktober 2008 - 23:13 #6
<ole>

Hvis de fylder 4 MB, ville jeg råde dig til at betragte det som en designfejl og rette dén del. Der må være mulighed for at bryde det op i mindre bidder og/eller komprimere billederne mere

/mvh
</bole>
Avatar billede newbie.dk Praktikant
28. oktober 2008 - 12:18 #7
Ole, jo det kan man vel godt kalde det.
Kan godt få det reduceret en del, men det løser ikke helt mit spørgsmål, da det stadig ville være rart med et billede mens der bliver preloadet. Man ved jo aldrig hvad folk sidder med af forbindelse.
Avatar billede olebole Juniormester
28. oktober 2008 - 14:06 #8
Dette burde vel kunne gøre det:

<body>

<img id="preLoadPic" src="load.gif" alt="Loading ...">

<script type="text/javascript">
function preload() {
    // Preload billeder her
    document.getElementById("preLoadPic").style.display = "none";
}
setTimeout("preload()", 10);
</script>
Avatar billede newbie.dk Praktikant
28. oktober 2008 - 17:19 #9
Ole, jeg kunne ikke lige se mig ud af koden. Men så jeg prøvede bare at sætte:

<script type="text/javascript">
var preLoad = new Array()
for (i = 0; i < p; i++){
preLoad[i] = new Image()
preLoad[i].src = Pic[i]
}
</script>


under


<img src="blank.gif" width="944" height="250" name="SlideShow" /></td>
</tr>
</table>


og det ser ud til at virke efter hensigten.
Er det en dårlig måde at løse det på?
Avatar billede newbie.dk Praktikant
08. november 2008 - 13:55 #10
Nå må hellere til at lukke dette spm.
Ole du satte det igang, så jeg synes du skal have pointne.

Ssv, jeg vil gerne give dig 10 point for dit link, det har jeg nemlig brugt. Så jeg hæver bare pointne til sidst.

Ligger i et svar.
Avatar billede Slettet bruger
03. juli 2010 - 22:36 #11
Kommer der svar, så spørgsmålet kan lukkes?
Avatar billede newbie.dk Praktikant
29. april 2014 - 00:38 #12
lukker denne
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