Cybaer: Bildwechsel

Beitrag lesen

Hi,

Habe aber darauf verzichtet, weil die Zahl der "unfähigen" Browser doch verschwindend gering ist (oder täusche ich mich?

Nein (jedenfalls mittlerweile nicht mehr). Aber es gibt nicht nur alte Browser, sondern auch neuere Text-PDA-Browser mit JavaScript (1.3). Aber keine Ahnung, wie die reagieren (nur Testberichte gelesen).

Allerdings werde ich es trotzdem zur Sicherheit verwenden.

*Prinzipiell* schreibe ich meine Scripte *immer* so, daß sie auch auf JS-1.0-Browsern keine Fehler produzieren. D.h., ich klammere *alles*, was seit 1.0 dazugekommen ist (in der einen oder anderen Weise - da bedarf es leider unterschiedlicher Strategien).

Aber wenn sich das erstmal "eingeschliffen" hat, hat man "ultra-sauberen" Code, ohne daß man sich beim Schreiben noch groß Gedanken machen muß. Man macht es einfach automatisch mit ... ;-))

Sind das nicht zu viele Klammern?

Äh, ja. Jeweils eine "}" zuviel (verdammtes Copy & Paste =;->). :-o

Boah, die Sachen gefallen mir ;-)

Hört man gerne. ;-)

<script type="text/javascript" language="JavaScript1.1"><!--

Nein: <script type="text/javascript" language="JavaScript">

Das "1.1" sorgt dafür, daß manche 1.0-Browser das Script erst gar nicht interpretieren. Das ist fürs Caching OK (ich hänge das immer separat ans Ende der HTML-Seite, damit diese Bilder möglichst zuletzt geladen werden), aber nicht hier.

Ein 1.0-Browser würde dann ggf. flip() & Co. anspringen wollen, aber die sind dann nicht da.

Der Fehler würde mir den Test mit dem Navigator 2.0 verhageln! ;-}

function switch(img,url) { document.images[img].src=url; }

Funktionen separat - außerhalb des "normalen" Codeflußes.

{ cache=new Array(); i=-1;

Hier braucht es keine "Bedingungsklammer" - ebenso verhält es sich mit dem Abschluß.

Das reicht mir doch eigentlich völlig so, oder?
<script ... language="JavaScript1.1">: Versteht der Browser kein JS 1.1, kommts dann bei onmouseover etc. zum Fehler oder überspringt er das JS einfach?

S.o.: Fehler!

Also:

<script type="text/javascript" language="JavaScript"><!--
 function switch(img,url) { if(document.images) { document.images[img].src=url; } }
 function flip(name) { switch(name,name+"1.gif"]); }
 function flop(name) { switch(name,name+"0.gif"]); }
 function flup(name) { switch(name,name+"2.gif"]); }

if(document.images) {
  cache=new Array(); i=-1;
  i++; cache[i]=new Image(); cache[i].src="guckmal1.gif";
  i++; cache[i]=new Image(); cache[i].src="guckmal2.gif";
 }
//--></script>

function flip() //Dummy

Bei mehrere Funktionen gleichen Namens, wird stets die letzte genommen!

Du kannst also z.B. function flip() { } in der Seite definieren und anschließend die "richtige" flip() mittels einer externen JS-Datei nachladen.

Dann gibt es auch keinen Fehler, falls die externe Datei mal nicht verfügbar ist!

Was auch noch geht: Das Caching in eine Funktion und die dann per onLoad aufrufen. Dann werden die Rollovers wirklich erst geladen, wenn der Rest der Seite bereits geholt wurde.

Gruß, Cybaer

--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!