# Seite springt zu schnell um



## guidograef (10. Juni 2004)

Hallo an alle Künstler hier im Forum,

ich habe eine Seite mit einem Preloaderbalken, die erst dann auf meine Homepage umspringt wenn bestimmte Dateien geladen sind. Damit es nicht zu langeweilig wird, habe ich einen Flashfilm eingebaut. Jetzt habe ich das Problem, das wer die Seite zum zweiten Mal aufruft, die Seite sehr schnell umspringt, und der Film nicht mehr ganz abgespielt wird. Den Cache habe ich schon zum löschen angegeben (siehe skript) aber irgendwie funktioniert das auch nicht. Ich bräuchte so etwas wie eine If-Anweisung, die besagt, das wenn alle Bilder geladen sind, die Seite erst dann umspringt, wenn auch der Film abgespielt wurde. Hat jemand für mich hier eine Lösung. Kenne mich damit noch nicht so gut aus. Herzlichen Dank. 

Hier das Script, welches ich übernommen habe:

```
<html>
<head>
<title>Spiti-Gialisa</title>
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
</head>

<body bgcolor="#000033" text="#FFFFFF" link="#000033" vlink="#000033" alink="#000033">
<div align="center">
<p>
<script language=JavaScript1.2>

<!-- begin hiding


startingColor = new Array() // <-- NICHT VERÄNDERN!

endingColor = new Array() // <-- NICHT VERÄNDERN!


// Hier deine Grafiken rein:

var yourImages = new Array('Bilder/Head.jpg','Bilder/Hintergrund-Home-neu.jpg','Bilder/Wohnplan-Kuche.gif','Bilder/Wohnplan-Wohnen.gif','Bilder/Wohnplan-Diele.gif','Bilder/Wohnplan-Bad.gif','Bilder/Wohnplan-Schlafen.gif','Bilder/Wohnplan-Terrasse1.gif','Bilder/Wohnplan-Terrasse2.gif','Bilder/Wohnplan-Terrasse3.gif','Bilder/Wohnplan-Panorama.gif','Bilder/Linie-unten.gif','Bilder/Karte-Ubersicht.jpg','Bilder/Kranidi1-klein.jpg','Bilder/Kranidi2-klein.jpg','Bilder/Kranidi3-klein.jpg','Bilder/Kranidi4-klein.jpg') // Ersetzen und erweitern durch deine Grafiken

var locationAfterPreload = "index_1.htm" // Hier den Pfad zur Seite die nach dem Vorladen geladen werden soll

var preloadbarWidth = 550 // Länge des Balkens

var preloadbarHeight = 12 // Höhe desselbigen

var backgroundOfGradient = "#FFCC00"


// Farbe mir der der Balken beginnt! Gib erste, dritte und fünfte Zahl/Buchstaben der Farbe an

startingColor[0] = "0"

startingColor[1] = "0"

startingColor[2] = "3"


// Wie oben nur die Farbe mit dem es endet

endingColor[0] = "0"

endingColor[1] = "0"

endingColor[2] = "3"


var gap = 7 // mind. 2! verändern, wenn es nen JS-Error gibt.



// NIX MEHR VERÄNDERN


if (!document.all) location.replace(locationAfterPreload)

var a = 10, b = 11, c = 12, d = 13, e = 14, f=15, i, j, ones = new Array(), sixteens = new Array(), diff = new Array();

var convert = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"), imgLen = yourImages.length;

var loaded = new Array(), preImages = new Array(), currCount = 0, pending = 0, h = 0, hilite = new Array(), cover = new Array();

var num = Math.floor(preloadbarWidth/gap);

for (i = 0; i < 3; i++) {

startingColor[i] = startingColor[i].toLowerCase();

endingColor[i] = endingColor[i].toLowerCase();

startingColor[i] = eval(startingColor[i]);

endingColor[i] = eval(endingColor[i]);

diff[i] = (endingColor[i]-startingColor[i])/num;

ones[i] = Math.floor(diff[i]);

sixteens[i] = Math.round((diff[i] - ones[i])*15);

}

endingColor[0] = 0;

endingColor[1] = 0;

endingColor[2] = 0;

i = 0, j = 0;

while (i <= num) {

hilite[i] = "#";

while (j < 3) {

hilite[i] += convert[startingColor[j]];

hilite[i] += convert[endingColor[j]];

startingColor[j] += ones[j];

endingColor[j] += sixteens[j];

if (endingColor[j] > 15) {

endingColor[j] -= 15;

startingColor[j]++;

}

j++;

}

j = 0;

i++;

}

function loadImages() {

for (i = 0; i < imgLen; i++) {

preImages[i] = new Image();

preImages[i].src = yourImages[i];

loaded[i] = 0;

cover[i] = Math.floor(num/imgLen)*(i+1)

}

cover[cover.length-1] += num%imgLen

checkLoad();

}

function checkLoad() {

if (pending) { changeto(); return }

if (currCount == imgLen) { location.replace(locationAfterPreload); return }

for (i = 0; i < imgLen; i++) {

if (!loaded[i] && preImages[i].complete) {

loaded[i] = 1; pending++; currCount++;

checkLoad();

return;

}

}

setTimeout("checkLoad()",10);

}

function changeto() {

if (h+1 > cover[currCount-1]) {

var percent = Math.round(100/imgLen)*currCount;

if (percent > 100) while (percent != 100) percent--;

if (currCount == imgLen && percent < 100) percent = 100;

defaultStatus = "Loaded " + currCount + " out of " + imgLen + " images [" + percent + "%].";

pending--;

checkLoad();

return;

}

eval("document.all.cell" + (h+1) + ".style.backgroundColor = hilite[h]");;

h++;

setTimeout("changeto()",1);

}

defaultStatus = "Loaded 0 out of " + imgLen + " images [0%]."

// end hiding -->

</script>


<b><font color="#000033" size="1" face="Verdana, Arial, Helvetica, sans-serif">Seite wird geladen ...
</font></b><br>
<script language=JavaScript1.2>

<!-- beging hiding

document.write('<table border="0" cellpadding="0" cellspacing="0" width="' + preloadbarWidth + '"><tr height="' + preloadbarHeight + '" bgcolor="' + backgroundOfGradient + '">');

for (i = 0; i < num; i++) {

document.write('<td width="' + gap + '" id="cell' + (i+1) + '"></td>');

}

document.write('</tr></table>');


document.write('<p><small><a href="javascript:location.replace(locationAfterPreload)">Ladevorgang Überspringen</a></small></p></font>')

loadImages();

// end hiding -->

</script>
</p>
<p>&nbsp;</p>
<p>
<codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="550" height="300">
<param name="movie" value="Intro-SG.swf">
<param name="quality" value="high"><param name="BGCOLOR" value="#000033">
<embed src="Intro-SG.swf" width="550" height="300" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" bgcolor="#000033"></embed>
</object>
</p>
</div>
</body>
</html>
```


Wie gesagt: das Skript habe ich übernommen. Wie kann ich jetzt eine Anweisung einfügen, das immer der Film abgespielt wird, auch wenn die vorgeladenen Bilder schon geladen sind. Wenn das jemand mir in einfachen Worten erklären könnte, wäre mir schon sehr geholfen.

danke!


----------



## KoMtuR (15. Juni 2004)

Also ich würde das nicht ändern, weil nicht jeder stundenlang deinen Preloader anschauen möchte, sondern eher deine Seite sehen will. Einmal ist doch ok.

Ausserdem frage ich mich warum sich ein User den Film zweimal anschauen soll. Beim ersten mal hat er ja die Dateien geladen. 

Aber: Mach es doch einfach so, dass der Flashfilm die Seite wechselt. So muss jeder deinen Film bis zu Ende anschauen. Schlecht für die DSL-Benutzer und gut für die Modem-Benutzer. Die werden nicht mehr benachteiligt ^^


----------

