Robin Popp: Vorladenscript: In jedem Browser ein anderer Fehler ...

Nabend Ihrz,

ich habe ein bereits bestehendes Script zum Bilder vorladen schlanker gemacht, weniger bug-anfällig und überhaupt. Im Grunde funktioniert es auch mittlerweile (im Schweisse meines Angesichts ... echt nicht mein Gebiet) fast perfekt. Dieses "fast" spiegelt sich aber in all meinen drei getesteten Browsern anders wieder.

Den Code werd ich Euch unten posten, einen Link habe ich auch zu der Aktion. Erst zu den Wundersamkeiten...

Explorer 5:
Es funktioniert im Grunde, nur lädt er manchmal nur bis kurz vorm Ende und schaltet dann logischerweise auch nicht um zur Zielseite. Reload lässt ihn das Ganze von vorne anfangen, und dann lädt er auch zu Ende, springt um blabla wie sichs halt gehört.
Wie kann ich ihn dazu zwingen, wirklich fertig zu laden?
Hab in nem Buch mal was von onabort und onerror gelesen, hab ich auch eingebaut, wurde aber völlig ignoriert.

Netscape 4.5
Der lädt sogar fertig, leitet brav weiter, und dann, auf der Zielseite, fängt er an nochmal alles von vorne zu laden. Als hätte ich die Vorleidenseite niemals gebaut.
Wie geht das denn? Bzw. was kann ich dagegen tun?

Netscape 6
Hm, er scheint tatsächlich normal zu laden. Am eingebauten Ladebalken kann man das nicht erkennen. Die 1x1 Pixel Bilder sprechen aber dafür. Bin mir nicht wirklich sicher, ob er hier alle Bilder komplett vorlädt. Die Weiterleitung versagt hier dann. Auf der per Hand eingegebenen Zielseite verhält er sich dann, als wäre alles komplett geladen.

Es können ja (hoffentlich) nur Kleinigkeiten sein. Ich hoffe es fällt Euch da was auf und Ihr könnt mir da helfen.

Dafür, dass Ihrs besser wisst als ich, danke ich Euch schon jetzt ;-)

Robin

IM HEAD

<script language="JavaScript"><!--
var pics=new Array()
pics[0]="../images/picshow/start.gif"
pics[1]="../images/picshow/pic01-0.jpg"
pics[2]="../images/picshow/pic01-1.jpg"
pics[3]="../images/picshow/pic01-2.jpg"
pics[4]="../images/picshow/pic02-0.jpg"
pics[5]="../images/picshow/pic02-1.jpg"
pics[6]="../images/picshow/pic02-2.jpg"
pics[7]="../images/picshow/pic03-0.jpg"
pics[8]="../images/picshow/pic03-1.jpg"
pics[9]="../images/picshow/pic03-2.jpg"
pics[10]="../images/picshow/pic04-0.jpg"
pics[11]="../images/picshow/pic04-1.jpg"
pics[12]="../images/picshow/pic04-2.jpg"
pics[13]="../images/picshow/pic05-0.jpg"
pics[14]="../images/picshow/pic05-1.jpg"
pics[15]="../images/picshow/pic05-2.jpg"
pics[16]="../images/picshow/pic06-0.jpg"
pics[17]="../images/picshow/pic06-1.jpg"
pics[18]="../images/picshow/pic06-2.jpg"
pics[19]="../images/picshow/pic07-0.jpg"
pics[20]="../images/picshow/pic07-1.jpg"
pics[21]="../images/picshow/pic07-2.jpg"
pics[22]="../images/picshow/pic08-0.jpg"
pics[23]="../images/picshow/pic08-1.jpg"
pics[24]="../images/picshow/pic08-2.jpg"
pics[25]="../images/picshow/pic09-0.jpg"
pics[26]="../images/picshow/pic09-1.jpg"
pics[27]="../images/picshow/pic09-2.jpg"
pics[28]="../images/picshow/pic10-0.jpg"
pics[29]="../images/picshow/pic10-1.jpg"
pics[30]="../images/picshow/pic10-2.jpg"
pics[31]="../images/picshow/pic11-0.jpg"
pics[32]="../images/picshow/pic11-1.jpg"
pics[33]="../images/picshow/pic11-2.jpg"
pics[34]="../images/picshow/pic12-0.jpg"
pics[35]="../images/picshow/pic12-1.jpg"
pics[36]="../images/picshow/pic12-2.jpg"

function preloader()
{
for (g=0; g<pics.length; g++)
eval('document.preload'+g+'.src="'+pics[g]+'";');
}

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

function update(num)
{
loaded[num]++;
if (loaded[num] == 2)
{
eval('document.status'+num_loaded+'.src="../images/picshow/loaded.gif";');
num_loaded++;
if (num_loaded == pics.length)
top.location.href="pics.html";
}
}
//--></script>

IM BODY

<body onload="preloader()">
<table border="0" cellpadding="0" cellspacing="0" height="48%" align="center">
<tr>
<td align="center" valign="bottom">
<p>Die Picshow wird geladen.<br>
Dauert ja nicht lange...</p>
<p><b>Status:</b></p>
</td>
</tr>
</table>

<script language="JavaScript"><!--
document.write('<p align="center">');
for (i=0; i<pics.length; i++)
document.write('<img src="../images/picshow/loading.gif" width="3" height="10" name="status'+i+'">');
document.write('<br>');
for (j=0; j<pics.length; j++)
document.write('<img src="../images/space.gif" width="1" height="1" border="0" onload="update('+j+')" name="preload'+j+'">');
document.write('</p>');
//--></script>

</body>

--
Dass Du nicht paranoid bist, heisst nicht, dass sie auch nicht hinter Dir her sind...
  1. Nabend Ihrz,

    ich habe ein bereits bestehendes Script zum Bilder vorladen schlanker gemacht, weniger bug-anfällig und überhaupt. Im Grunde funktioniert es auch mittlerweile (im Schweisse meines Angesichts ... echt nicht mein Gebiet) fast perfekt. Dieses "fast" spiegelt sich aber in all meinen drei getesteten Browsern anders wieder.

    Ich wiederhole mich:
    Preload skript sind die Pest!
    Sie haben keinen Nutzen ausser Besucher zu verwirren, Besucher auszuschliessen und unötig Traffic zu verursachen.

    <body onload="preloader()">

    <script language="JavaScript"><!--
    document.write('<p align="center">');
    for (i=0; i<pics.length; i++)
    document.write('<img src="../images/picshow/loading.gif" width="3" height="10" name="status'+i+'">');
    document.write('<br>');
    for (j=0; j<pics.length; j++)
    document.write('<img src="../images/space.gif" width="1" height="1" border="0" onload="update('+j+')" name="preload'+j+'">');
    document.write('</p>');
    //--></script>

    und irgendwie durchschau ich dein System nicht.

    Wozu um Himmelswillen brauchst du ein Preload skript?
    Reichen nicht die Fähigkeiten des Browsers aus Bilder zu cachen?

    Oder ist das ganze für irgendein Spiel oder sowas?

    Dann würde ich mir mal Gedanken um Arrays machen und sinnvolle Funktionen schreiben, die dir (und dem Browser) die arbeit erleichtern, da was du da vorladen willst ja einer einfachen systematik zu folgen scheint. (Du brauchst ein zweidimenasoniales Array mit 12 Elementen mit jeweils frei weiteren)

    Ansonsten kann ich dir noch den Tipp geben, dass jeder Browser sehr unterschiedlich auf dynamisch per HTML Code erzeugte Bilder reagiert und nicht jeder dort das onload event wirklich feuert. Das funktioniert nur sicher mit dem Image Objekt direkt im Js-code.

    Struppi.