Avatar billede overload.dk Nybegynder
13. februar 2000 - 13:47 Der er 3 kommentarer og
1 løsning

Hjælp til MM preloading scriptet !!!

Jeg har flg. script kørende, som virker fint, men jeg vil have MM scriptet til at udføre endSceen() når den har hentet alle billederne! - Hvordan gøres dette?

------------------------------------------------

  <script language="JavaScript">
  function MM_preloadImages() { //v2.0
  if (document.images) {
    var imgFiles = MM_preloadImages.arguments;
    if (document.preloadArray==null) document.preloadArray = new Array();
    var i = document.preloadArray.length;
    with (document) for (var j=0; j<imgFiles.length; j++) if (imgFiles[j].charAt(0)!="#"){
      preloadArray[i] = new Image;
      preloadArray[i++].src = imgFiles[j];
} }

}   

  function endSceen() { location.href='sitestart.htm'; }
  </script>


Det er vel kun et spørgsmål om at sætte
if (et eller andet == document.preloadArray.length) { endSceen(); } ind, men nu har jeg forgæves prøvet at ændre og redigere i snart en hel uge, uden noget held, derfor prøver jeg her på eksperten.

Mvh
Peter
Avatar billede olebole Juniormester
14. februar 2000 - 02:39 #1
Her er en anden preLoader, der gør, hvad du ønsker:

<html>
<head>

<script language="javascript">
<!--
function Array() {
    this.length = Array.arguments.length;
    for (i=0; i<this.length; i++) {
    this[i] = Array.arguments[i];
    }
}
// Her anfører du de billeder, du vil preloade
var pics = new Array(
"Billede1.jpg",
"Billede2.jpg",
"Billede3.jpg",
"Billede4.jpg");

function doPre() {
    for (j=0;j<pics.length;j++) {
        eval('document.prePic'+j+'.src = "'+pics[j]+'";');
    }
}

var loaded = new Array(0);
for (k=0;k<pics.length;k++) {
    loaded[k] = 0;
    num_loaded = 0;
}

function tellMe(num) {
    loaded[num]++;
    if (loaded[num] == 2) {
        num_loaded++;
        if (num_loaded == pics.length) {
            endSceen(); // Her fyres din funktion af, når alle billeder er preloadede
        }
    }
}
// -->
</script>
</head>
<body bgcolor="#ffffff" onLoad="doPre();">

<script>
for (i=0;i<pics.length;i++) {
    document.write("<img src='spacer.gif' width=1 height=1 onLoad='tellMe("+i+")' name='prePic"+i+"'>");
}
</script>

</center>
</body>
</html>

-----------------------------

'spacer.gif' er en klar gif på 1x1 pixel, som jeg bruger i forvejen på næsten alle sites. Du kan anbringe denne række småbitte gif'er et sted, hvor de ikke generer.

/VH
Ole Clausen
Avatar billede overload.dk Nybegynder
14. februar 2000 - 18:49 #2
Det er netop det jeg vil undgå, ved at bruge netop dette script. - men jeg vil da gemme det, hvis jeg nu ikke kan finde andre muligheder.

Jeg kan dog ikke forstå at det skulle være så svært at lave en lille ekstra funktion der siger:
"hvis nuværende (det der er ved at blive loaded) er sidste billede (dvs. f.eks. 26) er det samme som antallet af billeder, 26, så... skal den afvikle den anden funktion - MEN hvis det er under (<) 26, skal den blot forsætte sin procedure.

Mvh
Peter
Avatar billede olebole Juniormester
15. februar 2000 - 05:26 #3
Jeg VED godt, det er det, du vil undgå.
Det ER gået op for mig, du ikke forstår, det er svært.

Har du tænkt over, hvorfor du selv har hekset i over en uge med det?
Eller hvorfor ingen andre endnu er kommet med en anden løsning her på sitet?
Eller hvorfor du aldrig har set det gjort?

Svaret er: Det ER svært...!
Problemet er at DreamWeaver-scriptet ikke 'loader' billederne, men 'loader dem i cashen'. Du har ingen mulighed for at spørge, hvornår de er DER.
Surt - men sandt!

Ellers kan du prøve dette:

================================

<html>
<head>
<style type="text/css">
#divLoading{
position:absolute;
width:100%;
height:98%;
top:0;
left:0;
background-color:white;
layer-background-color:white;
font-family:arial,helvetica;
z-index:100}
</style>
<script type="text/javascript" language="JavaScript">
// BrowserCheck
NS4 = document.layers && !document.getElementById;
IE4 = document.all && !document.getElementById;
brow5 = document.getElementById;
// Gemmer dit 'dæk lag'
function hideLoading(div){
    div = "divLoading";
    if (NS4) {
        document[div].visibility = 'hidden';
    }else if (IE4) {
        document.all[div].style.visibility = 'hidden';
    }else if (brow5) {
        document.getElementById(div).style.visibility = 'hidden';
    }

}
onload=hideLoading;
</script>
</head>
<body bgcolor="White">

<div id="divLoading"><table width=100% height=95% border=0><tr><td width=100% height=100% align=center valign=middle><h2>Loading...</h2></td></tr></table></div>

        ****************  HER SKRIVER DU RESTEN AF DIN SIDE  ****************

</body>
</html>

================================

Håber, det kan hjælpe ;-)

/VH
Ole

Avatar billede overload.dk Nybegynder
22. februar 2000 - 23:23 #4
Der har ingen acceptable svar været, derfor lukker jeg sprøgsmålet igen.

Ellers tak.


Mvh
Peter
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