• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[JS] preloader

womstar

Lounge-Member
hallööötze...

weil meine seite (www.more-style.de) über einige images verfügt, musste ich ja nun einen preloader basteln. naja ich wollte nicht so einen "einfachen" :D, jedenfalls nicht für js. deswegen hab ich einen kleinen aber feinen preloader mit ladebalken, prozentanzeige, und statusanzeige gebastellt. der code ist überragend kurz, so das ich ihn hier posten kann :)

hier der preloader in aktion mit allen oben genanten features:
preloader

die frage an euch ist jetzt, ab welchen browsern der ladestatus läuft, sprich ladebalken, prozentanzeige und statusanzeige.
bei der prozentanzeige und der statusanzeige ist klar, dass es erst mit den neureren nicht IE browsern läuft, wegen innerHTML.

wichtig wäre mir der ladebalken.

hier der code:

Code:
<html>
<head>
<title>preloader</title>
<script>
/*>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<*/
/*>>>>>>>>> easy preloader <<<<<<<<<*/
/*>>>>>> by robert engelhardt <<<<<<*/
/*>>>>>>>>>>>>> © 2003 <<<<<<<<<<<<<*/
/*>>>>>>>>> [email]womstar@uni.de[/email] <<<<<<<<<*/
/*>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<*/

/* EIGENSCHAFTEN */

url	= "bilder.html";		// weiterleitungs url wenn bilder geladen

progress= new Array(	"bin.png",	// hier kommen die bilder rein
			"clem.png",
			"wai.png",
			"test.jpg",
			"idiot.png",
			"kotze.png");

/* EIGENSCHAFTEN ENDE */

var x;
function preload()
{
	p	= new Array();
	x	= 0;

 	for(i=0;i<progress.length;i++)
	{
		p[i]		= new Image();
		p[i].onabort 	= update;
		p[i].onerror 	= update;
		p[i].onload  	= update;
		p[i].src	= progress[i];
	}
}

function update()
{
	x++;
	pro=Math.floor((x/progress.length)*100);
	document.images["balken"].width=pro*2;

	(document.all) ?
	dom=document.all["loadausgabe"] :
	dom=document.getElementById("loadausgabe");

	dom.innerHTML= x+" von "+progress.length+" Bildern geladen.<br>"+pro+" %";

	if(pro==100) location.href=url;
}
</script>
</head>

<body onload="preload()" bgcolor=#617691>
<table width=100% height=100% align=center>
	<td align=center>
		<table align=center width=210 height=20>
		<tr>
			<td align=left width=210 valign=top height=20>
				<img src=loadbar.gif>
			</td>
		</tr>
		<tr>
			<td align=left width=210 valign=top height=20>
				<img src=balken.gif height=5 width=0 name=balken>
			</td>
		</tr>
		<tr>
			<td align=left width=210 valign=top height=20>
				<div id="loadausgabe" style="font:10px verdana;color:ffffff">0 von 0 Bildern geladen.<br>0 %</div>
			</td>
		</tr>
		</table>
	</td>
</table>
</body>
</html>

viel spaß :)

ps: mit dsl sieht man kaum das was läde mit isdn kann man das besser begutachten...aber das alles geladen ist sieht man an meiner seite das null ladezeit auf der eigentlichen seite besteht, ausgenommen popup+image.
 
So ein Teil habe ich schon lange gesucht.

DSL, etwas Ladezeit. Firmenrouter, Proxy etc.
Aber genial gelöst.

Testsystem:

W2k
IE 6.0 SP1

Resultat:
funktioniert einwandfrei.
 
kannst das script gerne benutzen
aber :D
vom wem es ist sollte schon stehn beleiben...so zur werbung :D
 
so....puuuhh...musste doch erst mal von der einfach bildchen variante ablassen, weil der liebe opera da nicht mit machte....
jetzt hab ich den ladebalken als layer gemacht....
ebenfalls ist das script jetzt um das dopellte größer geworden, ne extra function für opera, tz tz tz...
scheiß "ich bin ne ausnahme und was besonderes brwoser"

bis jetzt hab ich nur mitbekommen das ab opera7 innerHTML funzt...also steht bei alle versionen die darunter sind "bilder werden geladen..." statt prozent- und statusanzeige.

naja jedenfalls läuft es bei mir zuhaus ab opera5 (höher muss ich auf arbeit sehn, speziel 6), ab ns6,
@ comet .... ja ja ....mal sehn... :) meine seite ist ehn nur ab 6 optimiert und ns5 hab ich noch nie (schande über mich :D) in den händen gehabt .... naja und die 4.75...ja wie gesagt mal sehn...

naja und natürlich im IE mal wieder die wenigsten probleme...ich konnte ab 5 testen....und da gings super.

so, nur noch mal das optimiert an gehangen... :)

@comet, kannst ja mal gucken in welchen browsern es bei dir läuft und berichten....
 

Anhänge

  • preloader.zip
    1,6 KB · Aufrufe: 510
Zuletzt bearbeitet:
Bißchen spät, aber falls das noch von Interesse für dich ist. Mit Opera 6 kommt der Ladebalken und der Text Bilder werden vorgeladen.
 
hi wom!

klasse script das :D
aber was mir noch fehlt, ist ein "skip preload"-link, denn als ISDN-User warte ich doch ziemlich lange auf deine seite ... und ich will entscheiden, mich der gefahr auszusetzen, die seite schon zu betreten, BEVOR ALLE Bilder geladen sind :D
 
ja stimmt... abe ich denk das ist optional....

nur zur info...also das script geht ab opera5, ab ns6 und ab ie4.
 
Angeregt von womstars schönem Preloader-Script interessiert mich mal, ab wieviel Fotos man denn eines einsetzen sollte. Wenn man von ca. 100KB größe je Foto ausgeht. Muß man das erst mit anderen Surfgeschwindigkeiten ausprobiert haben oder kann man allgemein sagen, ab so und soviel Bildern ist es sinnvoll.
 
DANKE DANKE DANKE

Es ist zwar noch nicht das was ich gesucht habe (weil ich alle Bilder von Hand eintragen muss) Aber es ist sehr gut der Preloader. Schaut euch an was ich damit gemacht habe. (NICHT IE BENUTZEN)

http://www.applemania.de
 
@den letzten:

Ich weiß nicht wieso man das nicht mit dem IE net usen sollte, außer dem hintergrund-sound ist da nixs anders....


ich habe gerade mal versucht zu denken und gedacht es gibt ja auch ein script mit dem man alle bilder eines ordners anzeigen lassen kann egal wieviele da drin sind und man muss sie nicht einzeln angeben

HTML:
############################[URL=http://www.webmaster-resource.de]www.webmaster-resource.de[/URL] #########################################<html>
<head>
<title>Bilder eines Ordners einlesen und ausgeben</title>
</head>
<body>
 
<table border="0" cellpadding="2" cellspacing="3">
<?php
 
$Pfad = ".";
 
if($Verzeichniszeiger = opendir($Pfad)) 
{
    while($Datei = readdir($Verzeichniszeiger))
    {
        if($Datei != "." && $Datei != "..")
        {
            $Bilddaten = getimagesize($Datei);
 
            if($Bilddaten[2] == 1 || $Bilddaten[2] == 2 || $Bilddaten[2] == 3)
            {
?>
 <tr>
  <td><img height="<?php echo$Bilddaten[1]; ?>" src="<?php echo$Datei; ?>" title="<?php echo$Datei; ?>" width="<?php echo$Bilddaten[0]; ?>"></td>
 </tr>
 <tr>
  <td><b>Dateiname:</b> <i><?php echo$Datei; ?></i><br><b>Dateigröße:</b> <i><?php echo filesize($Datei); ?> Bytes</i><br><b>Bildgröße:</b> <i><?php echo$Bilddaten[0]; ?> x <?php echo$Bilddaten[1]; ?> Pixel</i></td>
 </tr>
<?php
            }
        }
    }
    closedir($Verzeichniszeiger);
}  
 
?>
</table>
 
</body>
</html>

und dann müsste man doch theoretisch den introdingsda bearbeiten können oder?

achja und ich würde echt einen intro-überspringen button machen

mfg, lal

(noob, bitte nicht hauen)

___________________________________________
Ich habe meinen Pc mal gefragt was ich für eine Webseite programmieren soll .... Die Antwort war: "Bloß nicht", ich nehme an ihr kennt eine bessere Antwort oder??? ;)
 
sieht doch nett, aus jedoch funzt bei mir das nicht richtig, vieleicht liegt es an der ordnerangabe der Bilder?

Also ich hab den Code folgender maßen verändert:

Code:
<html>
<head>
<title>PRE</title>
<script>
/*>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<*/
/*>>>>>>>>> easy preloader <<<<<<<<<*/
/*>>>>>> by robert engelhardt <<<<<<*/
/*>>>>>>>>>>>>> © 2003 <<<<<<<<<<<<<*/
/*>>>>>>>>> womstar@uni.de <<<<<<<<<*/
/*>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<*/
/* EIGENSCHAFTEN */
url	= "index.php";		// weiterleitungs url wenn bilder geladen
progress= new Array(	"/2006/images/index_00.gif",	// hier kommen die bilder rein
			"/2006/images/index_01.gif",
			"/2006/images/index_02.gif",
			"/2006/images/index_03.gif",
			"/2006/images/index_04.gif",
			"/2006/images/index_05.gif",
			"/2006/images/index_06.gif",
			"/2006/images/index_07.gif",
			"/2006/images/index_08.gif",
			"/2006/images/index_09.gif",
			"/2006/images/index_10.gif",
			"/2006/images/index_11.gif",
			"/2006/images/index_12.gif",
			"/2006/images/index_13.gif",
			"/2006/images/index_14.gif",
			"/2006/images/index_15.gif",
			"/2006/images/index_16.gif",
			"/2006/images/index_17.gif",
			"/2006/images/index_18.gif",
			"/2006/images/index_19.gif",
			"/2006/images/index_20.gif",
			"/2006/images/index_21.gif",
			"/2006/images/index_22.gif",
			"/2006/images/index_23.gif",
			"/2006/images/index_24.gif",
			"/2006/images/index_25.gif",
			"/2006/images/index_26.gif",
			"/2006/images/index_27.gif",
			"/2006/images/index_28.gif",
			"/2006/images/index_29.gif",
			"/2006/images/index_30.gif",
			"/2006/images/index_31.gif",
			"/2006/images/index_1_03.gif",
			"/2006/images/index_1_05.gif",
			"/2006/images/index_1_07.gif",
			"/2006/images/index_1_12.gif",
			"/2006/images/index_1_14.gif",
			"/2006/images/index_1_16.gif",
			"/2006/images/index_1_18.gif",
			"/2006/images/index_1_20.gif",);

/* EIGENSCHAFTEN ENDE */

x	= 0;
p	= new Array();
t	= new Array();
opi	= (navigator.userAgent.indexOf("Opera"));
opv	= (navigator.appVersion.charAt(0));

function preload()
{
 	for(i=0;i<progress.length;i++)
	{
		if(opi>-1)
		{
			p[i] 		= new Image();
			p[i].src	= progress[i];
			t[i]		= false;
		}
		else
		{
			p[i] 		= new Image();
			p[i].onabort 	= update;
			p[i].onerror 	= update;
			p[i].onload  	= update;
			p[i].src	= progress[i];
		}
	}
	if(opi>-1) operaLoad();
}

function operaLoad()
{
	r=setTimeout("operaLoad()",0);
	for(i=0;i<p.length;i++)
	{
		if(t[i]==false&&p[i].complete)
		{
			t[i]	= true;
			x++;
			pro	= Math.floor((x/progress.length)*100);

			if(document.all)
			document.all["balken"].style.left=(-200)+(pro*2);
			else if(document.getElementById)
			document.getElementById("balken").style.left=(-200)+(pro*2);

			if(opi<0 && opv<=6)
			{
				(document.all) ?
				dom=document.all["loadausgabe"] :
				dom=document.getElementById("loadausgabe");
				dom.innerHTML= x+" von "+progress.length+" Bildern geladen.<br>"+pro+" %";
			}
		}
	}
	if(pro==100)
	{
		clearTimeout(r);
		location.href=url;
	}
}

function update()
{
	x++;
	pro=Math.floor((x/progress.length)*100);

	if(document.all)
	document.all["balken"].style.left=(-200)+(pro*2);
	else if(document.getElementById)
	document.getElementById("balken").style.left=(-200)+(pro*2);

	(document.all) ?
	dom=document.all["loadausgabe"] :
	dom=document.getElementById("loadausgabe");
	dom.innerHTML= x+" von "+progress.length+" Bildern geladen.<br>"+pro+" %";

	if(pro==100) location.href=url;
}
</script>
</head>

<body bgcolor=#3366FF onload="preload()">
<table width=100% height=100% align=center>
	<td align=center>
		<table align=center width=210 height=20>
		<tr>
			<td align=left width=210 valign=top height=20>
				<img src=loadbar.gif>
			</td>
		</tr>
		<tr>
			<td align=left width=210 valign=top height=20>
				<div id="schaft" style="font:1px;overflow:hidden;width:200px;height:8px;border:1px solid #ffffff">
					<div id="balken" style="position:relative;left:-200px;font:1px;width:200px;height:8px;background-color:#A6B2C2"></div>
				</div>
			</td>
		</tr>
		<script>
		if(opi<0 && opv<=6)
		document.write("<tr><td align=left width=210 valign=top height=20>"
				+"<div id='loadausgabe' style='font:10px verdana;color:#ffffff'>"
				+"0 von 0 Bildern geladen.<br>0 %</div></td></tr>");
		else
		document.write("<tr><td align=center width=210 valign=top height=20>"
				+"<font size=1 color=#ffffff face=verdana>"
				+"Bilder werden vorgeladen..."
				+"</font></td></tr>");
		</script>
		</table>
	</td>
</table>
</body>
</html>

Eigentlich nur die Bilderangaben die er laden soll, und halt die weiterleitungsurl, da die Bilder aber in anderen Ordnern liegen kann es da zu problemen kommen??? Denn weder im IE noch woanders geht das teil???
 
Zuletzt bearbeitet:
du solltest glaube ich mal testen ob irgentwo ein leerzeichen (whitespace, " ") zuviel oder zu wenig ist.... ich habe mal ta<gelang den fehler gesucht und dann wars ein leerzeichen...
 
Hallo an das Forum/preloader
Dieses Script funktioniert prinzipiell bei mir, jedoch fehlen die beiden gifs für die Darstellung:

loadbar.gif
balken.gif


Bitte wo würde ich die bekommen ??
MfG
para1 :D
 
Zurück
Oben