Statusanzeige - Probleme
Nightshadow
- javascript
0 Struppi0 Nightshadow0 Eternius0 Nightshadow0 Eternius0 Nightshadow0 Cybaer
0 Struppi
0 Ingo Turski
Hallo,
ich hab mir auf meiner hp einen Preloader zum vorausladen der Bilder eingebaut. Dieser zeigt sogar in der IE Statusanzeige den Fortschritt des ladens in % an.
Nun mein Problem:
Diese Statusanzeige vom Preloader zeigt er über die ganze hp an.
Ich habe auf jeder meiner Seiten im Head den Tag "Window.Status="...." drinne, und trotzdem wird immer die Statusanzeige vom Preloaden angezeigt.
Kann ich die Statusanzeige des Preloaders ausschalten oder aber auch unterm Ladebalken ausgeben lassen?
Vieleicht kann mir ja jemand helfen
schonmal vielen danke im voraus.
hier noch das Script des Preloaders:
<script language="JavaScript1.2">
startingColor = new Array() // <-- Nicht veraendern!
endingColor = new Array() // <-- Nicht veraendern!
// welche Bilder sollen vorrausgeladen werden
var yourImages = new Array (" ",)
var locationAfterPreload = "Index2.html" // Adresse wohin es nach dem vorladen weiterleitet
var preloadbarWidth = 200 // Die Laenge der Preloadbar. Sollte groesser sein als der gesamte Betrag der Bilder die geladen werden sollen
var preloadbarHeight = 10 // Die Hoehe der Preloadbar
var backgroundOfGradient = "#333333" // Farbe der Preloadbar waeherend es laedt
// Startfarbe
startingColor[0] = "7"
startingColor[1] = "7"
startingColor[2] = "8"
// Farbe am Ende
endingColor[0] = "7"
endingColor[1] = "7"
endingColor[2] = "8"
// Fuer Fehlersuche:
var gap = 2
// Nichts 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>
<Body>
<script language="JavaScript">
<!--
document.write('<table border="0" cellpadding="0" cellspacing="1" 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="Index2.html"></a></small></p></font>')
loadImages();
// -->
</script>
ich hab mir auf meiner hp einen Preloader zum vorausladen der Bilder eingebaut. Dieser zeigt sogar in der IE Statusanzeige den Fortschritt des ladens in % an.
Warum?
Nun mein Problem:
Ein preloader ist das Problem.
Mal abgesehen, das er nur mit dem IE funktioniert und eher schelcht programmiert ist, das er nicht das onload Event von Bildern nutzt, sondern mit Timeout unter Umständen eine endlosschleife macht.
Wozu soll das gut sein?
Struppi.
Danke für Deine schnelle Antwort.
Ich wollte meine Bilder vorausladen, und mir wurde dieses script empfohlen. Da es noch gut aussieht, hab ich es meinen Bedürfnissen angepasst und eingebaut. Ich kenn mich in Java leider nicht aus.
Nach Deiner Aussage scheint das Script ja nicht der Brüller zu sein.
Gibts denn da sinnvollere scripte?
Nightshadow
Hallo,
ja, nimm keins.
gruss
hallo,
danke für die schnellen Antworten
Ihr meint es sei nicht Sinnvoll, dann werd ich es mal entfernen.
Aber warum wird empfohlen die Bilder voraus zu laden?
Hallo,
Aber warum wird empfohlen die Bilder voraus zu laden?
wo, wie, wann, wer, warum, weshalb?
gruss
wurde schon auf einigen Foren Diskutiert
Hi,
wurde schon auf einigen Foren Diskutiert
Wie bereits erwähnt: Braucht die Seite nicht sofort sichtbare Grafiken (z.B. für Rollover-Effekte), dann müssen sie vorab geladen werden, um einen "Hänger" beim Effekt zu verhindern.
Aber auch z.B. bei Slideshows sehr sinnvoll, damit das nächste Bild sofort angezeigt wird.
Ich finde sie aber auch prinzipiell sinnvoll (und darüber kann man geteilter Neinung sein), um z.B. auf *manchen* Seiten (mit möglichst wenig eigenem Download) schon Bilder für die voraussichtlich nächste Seite vorzuladen. Lädt der Surfer erwartungsgemäß die nächste Seite, wird selbige i.d.R. deutlich schneller (inkl. Grafiken) angezeigt und kann, während der Surfer die Seite liest, bereits die nächsten Grafiken vorladen. Lädt der Surfer nicht die nächste Seite, ist nur im Hintergrund ein wenig Trafic entstanden, der aber niemanden "belastet".
Ein kleines (voll-kompatibles ;-)) Vorladescript:
<script type="text/javascript" language="JavaScript1.1"><!--
if(document.images) { cache=new Array(); i=-1;
i++; cache[i]=new Image(); cache[i].src="img/grafik.gif";
}
//--></script>
Einfach die Zeile mit dem i++ am Anfang nach Bedarf vervielfältigen und die Pfade der gewünschten Grafiken dort eintragen.
Alernativen:
Gruß, Cybaer
Ihr meint es sei nicht Sinnvoll, dann werd ich es mal entfernen.
Aber warum wird empfohlen die Bilder voraus zu laden?
Weil viele Programmierer und Internetseitenbastler es versäumen bei Bildern im HMTL Code eine Größenangabe anzugeben, dadurch kommt es im IE zu einem sehr zuckendem Seitenaufbau, vor allem bei grafiklastigen Designs. Durch das vorladen der Bilder wird dieser Effekt minimiert, er liesse sich aber durch Größenangaben im HTML Code ebenfalls beseitigen ohne solche unötige Skripte, die Besucher verwirren.
Struppi.
Hi,
Ich wollte meine Bilder vorausladen, und mir wurde dieses script empfohlen.
was eine schlechte Empfehlung war.
Ich kenn mich in Java leider nicht aus.
Brauchst Du auch nicht - es handelt sich um JavaScript ;-)
Nach Deiner Aussage scheint das Script ja nicht der Brüller zu sein.
Ich würde die Aussage sogar dahingehend interpretieren (und sehe dies auch selbst so), daß ein Vorladescript an sich schon nicht der Brüller ist.
Gibts denn da sinnvollere scripte?
Ja. Es gibt imo nur _einen_ sinnvollen Einsatz dieser Technik: wenn auf einer Seite über css :hover oder JavaScript onmouseover neue Grafiken geladen werden. Dann ist es sinnvoll, diese bereits im Cache zu haben, da der Effekt ansonsten zu lange auf sich warten läßt. Ein solches Script sollte aber am besten erst auf der Seite eingsetzt werden, die auch die Grafiken benötigt. Und es macht auch keinen Sinn, hierbei die Statuszeile des Browsers zu mißbrauchen (zu versuchen), da hier bereits sinnvollere Informationen - auch zum Ladestand - vom Browser selbst angezeigt werden.
freundliche Grüße
Ingo