# Pre-loader editieren



## EnQuI (3. August 2003)

Hallo,

Ich bin neu im JavaScript bereich. Ich habe aber kürzlich einen Bild Preloader in meine Homepage integriert. Leider weist er eine eigentümlichkeit auf, die ich mit meinen Fähigkeiten nicht editieren kann, deshalb bitte ich hier um Hilfe. Der Preloader Quellcode ist fogender:


```
<SCRIPT language="JavaScript">
<!--

// Bilder des Preloaders Definieren
var pics = new Array("../../img/ani_ter1.gif", etc..");

// URL - Welche nach dem Preloaden aufgerufen wird.
var url = "index.html";


// Benutzer erlauben das Preloaden zu Überspringen [True /False]
var canSkip = true;


// NICHTS MEHR EDITIREN AB HIER!!!
var imgObjs = new Array(pics.length);
var loaded = 0;
var total = pics.length;
var cPercent = 0;

var barLayer = null;
var percentLayer = null;
var statLayer = null;
var doneMsgLayer = null;


function getLayer(layerID) {
if (document.getElementById)
	return document.getElementById(layerID);
else if (document.all)
	return document.all[layerID];
else 
	return null;
}


function updateBar() {
statLayer.innerHTML = "<font face=\"Arial\" color=\"#FFFFFF\"><B>" +loaded+ "/" +total+ "</B></font>";
var percent = Math.round(loaded/total * 100);
if (cPercent != percent)
	{
	cPercent = percent;
	barLayer.style.width = (cPercent*3) +"px";
	percentLayer.innerHTML = "<font color=\"#CC0033\"><B>" +cPercent+ "%</B></font>";
	}
if (loaded == total)
	{
	doneMsgLayer.innerHTML = "<a href=\"javascript:done()\"><font face=\"Arial\" color=\"#FFFFFF\" size=\"2\"><B>fertig</B></font></a>";
    done();
	}
}




function startLoading() {
if (document.getElementById || document.all)
	{
	barLayer = getLayer("bar");
	percentLayer = getLayer("percent");
	statLayer = getLayer("stat");
	doneMsgLayer = getLayer("doneMsg");
	if (canSkip)
		doneMsgLayer.innerHTML = "<a href=\"javascript:done()\"><font color=\"#FFFFFF\" size=\"2\" face=\"Arial\">preload überspringen</font></a>";
	for (i=0; i<pics.length; i++)
		{
		imgObjs[i] = new Image();
		imgObjs[i].onload = imgLoaded;
		imgObjs[i].onerror = imgFailed;
		imgObjs[i].src = pics[i];
		}
	}
else
	{

	window.location.replace(url);
	}
}

function done() {
parent.window.location.replace(url);

}

function imgFailed() {
alert("The following image failed to load, probably a broken link:\n" +this.src+ "\nPlease contact the webmaster of the site you are visiting about this.  The program will skip this file now.");
loaded++;
updateBar();
}

function imgLoaded() {
loaded++;
if (loaded>pics.length)
return
updateBar();
}

window.onload=startLoading

// -->
</SCRIPT>
```

Ich höchte das er nach dem Preloaden die geladene Seite in einem Frame öffnet. (Wahrscheinlich) durch den Fett markierten bereich, geht die Pre-geloadete Seite aber in einem Neuen fenster auf. Es soll aber in einem Frame mit target Bezeichnung "main" aufgemacht werden. Wie kann ich den Quellcode editieren, dass er es in "main" öffnet ?!

Vielen Dank,

NewBe
Enqui


----------



## Andreas Gaisbauer (4. August 2003)

Hallo,

es sollte funktionieren wenn du follgende Teile austauscht (wie richtig vermutet):

```
parent.window.location.replace(url);
```
mit

```
parent.main.location.replace(url);
```
und zwar an beiden Stellen - in startLoading() und done() 


bye


----------



## EnQuI (4. August 2003)

Juhuuu-!  Du bist göttlich Danke. Es funktioniert.

Ich hab es (nur) in done() ausgetauscht weil ich die location in startLoading() nicht richtig weiß [meinst du das in der else Anweisung _window.location.replace(url);_ ?], aber es funktioniert so.  
Gut wenn man sich mit JS auskennt. Ich werd mich dann mal auch mal reinkniehen.

Vielen Dank
Enqui


----------



## Andreas Gaisbauer (4. August 2003)

Hallo,

ja, ich mein das im else-Zweig, das würd ich noch ändern, da der else Zweig bei älteren Browsern (welche kein document.getElementById kennen) ausgeführt wird, und die sollten doch auch im Frame laden...


bye


----------

