Frage zu Script
bau
- javascript
Hallo ihr Forumer.
Ich bin seit einiger Zeit stiller Mitleser hier im Forum.
Es gab hier vor kurzem mal eine Diskussion/Unterhaltung zu Bilder-vorladen-Scripten, bei dem auch ein Script gepostet wurde, dass bei mir rein äusserlich einen recht guten Eindruck machte.
Kurzum: Ich hab das damals kopiert und wollte es nun mal ausprobieren. Leider fehlen mir, da nicht sehr JSversiert, einige Kenntnisse zur Anwendung...
Das Script wird höchstwahrscheinlich in den <head>-</head>-Bereich geschrieben, was aber soll zwischen die <body>-</body>-Tags?
***********************************unterhalb das Script***
<script language="JavaScript1.2">
<!-- begin hiding
startingColor = new Array() // <-- Nicht ändern!
endingColor = new Array() // <-- Nicht ändern!
// Hier alle Bilder angeben die vorgeladen werden sollen:
var yourImages = new Array("archiv/1.jpg","archiv/2.jpg","archiv/3.jpg","archiv/4.jpg","archiv/5.jpg","archiv/6.jpg","images/7.gif","archiv/8.jpg","archiv/9.jpg") // Ende Bilder
var locationAfterPreload = "fotoaw2.html" // Hier die Seite angeben zu der nach Vorladen weitergeleitet werden soll
var preloadbarWidth = 300 // Die Länge des Vorladestatusbalkens
var preloadbarHeight = 9 // Die Höhe des Vorladestatusbalkens
var backgroundOfGradient = "#000000" // Die Hintergrundfarbe des Vorladebalkens
// Startfarbwert des Vorladebalkens - Es muss dabei die der erste, dritte und fünfte Wert des entsprechenden Hexadezimalcodes angegeben werden
startingColor[0] = "0"
startingColor[1] = "0"
startingColor[2] = "0"
// Endfarbwert des Vorladebalkens - Es muss dabei die der erste, dritte und fünfte Wert des entsprechenden Hexadezimalcodes angegeben werden
endingColor[0] = "0"
endingColor[1] = "f"
endingColor[2] = "0"
// BEI PROBLEMEN:
var gap = 7
// BEI JAVASCRIPT ERROR mit diesem Wert experimentieren. 2 ist der minimale Wert
// AB HIER NICHTS MEHR Ä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>
***********************************oberhalb das Script***
Könnte jemand von euch so freundlich sein, und mir das Script erklären, bzw. mir sagen was ich dann in den "body" schreiben soll? Denn schließlich will ich ja auch verstanden haben, was ich da verwende...
Recht herzlichen Dank für die Mühen im Vorraus.
- bau, blödester anzunehmender user
Hab jetz grad keine Lust, dieses Mega-Script anzuschauen... jedenfalls ists doch arg groß...
Jemand anderes hat mir mal dieses Script gepostet, ich habs bis jetz noch net ausprobiert, aber sollte eigentlich schon funktionieren:
function MM_preloadImages()
{
var d=document;
if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}
// und im body Tag:
<body onLoad="MM_preloadImages('img_int/Nav_home_over.png',...)">
Hi,
{ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}
mit genau dieser Methode bin ich vor ein paar Tagen
sehr überraschend fürchterlich auf die Nase gefallen.
Es sieht eigentlich unheimlich einleuchtend aus, daß
man direkt nach dem Erzeugen des Image auch dessen
Komponente "src" ändern kann.
Aber die Welt ist leider nicht immer so, wie sie
scheint:
"Error: uncaught exception:
Permission denied to set property
HTMLImageElement.src"
Tja - so kann's gehen, wenn der Benutzer in Mozilla 0.9.9 in "Preferences" / "Advanced" / "Scripts & Windows" die Option "Allow Webpages to: Change images" abgeschaltet hat.
Danach funktionierte übrigens nicht mehr viel in dem
besagten Dokument ... ich fürchte, sicherheitsbewußte
Mozilla-Surfer werden in nächster Zeit "interessante"
Web-Seiten mit solchen Skripten zu Gesicht bekommen.
Viele Grüße
Michael
Hallo.
Interessant, interessant.
Kennt jemand ein Script, dass _wirklich überall wirklich zuverlässig_ läuft?
Oder meint ihr ich soll das mit dem Vorladen einfach lassen?
greez,
- bau
Hi,
Kennt jemand ein Script, dass _wirklich überall wirklich
zuverlässig_ läuft?
ignorierst Du die Existenz fehlerhafter Browser-Implementierungen?
Nicht, daß ich damit Mozilla für eine solche halte - aber _Deine_ Anforderung setzt leider voraus, daß alle Browser krrekt arbeiten würden ... egal, wie trivial das Skript auch sein mag.
Viele Grüße
Michael
Hi,
zurück.
ignorierst Du die Existenz fehlerhafter Browser-Implementierungen?
eben nicht.
Nicht, daß ich damit Mozilla für eine solche halte - aber _Deine_ Anforderung setzt leider voraus, daß alle Browser krrekt arbeiten würden ... egal, wie trivial das Skript auch sein mag.
stimmt eigentlich... dann werde ich das wohl sein lassen... aber eigentlich ging es mir ja nur ums vährständndnis des scripts.
:-/
Viele Grüße
auch zurück.
- bau
Moin!
Kennt jemand ein Script, dass _wirklich überall wirklich zuverlässig_ läuft?
Das geht natuerlich nicht, denn wenn ein Browser das Bildertauschen nicht erlaubt, dann ist das eben tabu - Punkt. Aber Du kannst je Fehlermeldungen abfangen und ignorieren. window.onerror ist Dein Freund.
So long