Problem mit IE6 & Bilderwechsel!
Medimax
- javascript
Folgendes Problem!
Das Bildwechselscript funktioniert in allen Browsern ohne Probleme. Erst unter IE6 bekomme ich eine Fehlermeldung, dass ein "}" fehlt. Mir ist vollkommen schleierhaft, warum es fehlen sollte, da es nur 2 mal geöffnet und auch 2 mal wieder geschlossen wird. Hoffe auf Hilfe von Euch und schicke das Script gleich mit.
VG Medimax
Das Script steht in einer externen *.js Datei.
<!--
function swapimage(imgName,newImg){
if ((navigator.appName == 'Netscape' && parseFloat(navigator.appVersion) >= 3) || (parseFloat(navigator.appVersion) >= 4)){
eval('document.' + imgName + '.src = "' + newImg + '"');
}
} ***angeblich soll laut IE6 hier noch ein } ?!?*** hin-->
Hi,
Das Bildwechselscript funktioniert in allen Browsern ohne Probleme.
das ist kein Grund, es auch einzusetzen.
Das Script steht in einer externen *.js Datei.
<!--
In einer JavaScript-Ressource haben HTML-Kommentare nichts zu suchen.
if ((navigator.appName [...]
Lass das bitte. Im Archiv findest Du genügend Gründe, die gegen diesen Unsinn sprechen.
eval('document.' + imgName + '.src [...]
Auch das ist völlig unnötig. Die Schreibweise objekt[ausprägung] funktioniert auch bei document.images.
Cheatah
Und wie geht es denn nun richtig?!?
VG Medimax
Hi,
Und wie geht es denn nun richtig?!?
neben den Gründen, warum das navigator-Objekt nicht verwendet werden soll, findest Du im Archiv auch, wie es statt dessen geht. Darüber hinaus hilft ein wenig Aufbau von Basiswissen im JavaScript-Kapitel.
Cheatah
Folgendes Problem!
Das Bildwechselscript funktioniert in allen Browsern ohne Probleme. Erst unter IE6 bekomme ich eine Fehlermeldung, dass ein "}" fehlt. Mir ist vollkommen schleierhaft, warum es fehlen sollte, da es nur 2 mal geöffnet und auch 2 mal wieder geschlossen wird. Hoffe auf Hilfe von Euch und schicke das Script gleich mit.
VG Medimax
Das Script steht in einer externen *.js Datei.
Wenn das so ist, dann ...
<!--
muss dies einen Fehler erzeugen (zumindest in Browsern, die funktionieren), da "<!--" kein gültiges Javascript ist.
Es ist immer sinnvoll, wenn man Javaskripte schreibt einen Netscape/Mozilla Browser zu verwenden, diese ziegen durch die eingabe von "javascript:" eine genauere Fehlerbeschreibung an.
function swapimage(imgName,newImg){
if ((navigator.appName == 'Netscape' && parseFloat(navigator.appVersion) >= 3) || (parseFloat(navigator.appVersion) >= 4)){
Warum das denn?????
Da du einen Bilderwechsel machen willst, reicht es voll und ganz aus zu prüfen ob der Browser das kann und zwar mit Hilfe von
if(document.images) {
// Browser die die Eigenschaft images nicht kennen können keine Bilder wechseln.
eval('document.' + imgName + '.src = "' + newImg + '"');
eval ist evil und in 99.99% der Fälle unnötig, so auch hier:
document.imgName.src = newImg;
solte das gleiche tun. Sinnvoll kann es noch sein, zu prüfen ob document.imgName existiert.
also alles in allem ist es so besser:
function swapimage(imgName,newImg)
{
// Kann der Browser Bilder wechseln?
if(!document.images) return false;
if(typeof document.imgName) return alert('Fehler!\nDas Bild ' + imgName + 'existiert nicht.');
document.imgName.src = newImg;
return true;
}
Die return werte sind notwendig, da alte Browser ansonsten unterschiedliche Rüchgabewerte monieren und Mozilla davor warnt.
Struppi.
Hi,
eval ist evil und in 99.99% der Fälle unnötig, so auch hier:
ja.
eval('document.' + imgName + '.src = "' + newImg + '"');
document.imgName.src = newImg;
Nein. Es sei denn, es wurde vorher
var imgName = 'imgName';
o.ä. zugewiesen.
Cheatah
OK, da war ich etwas zu schnell.
Also so:
also alles in allem ist es so besser:
function swapimage(imgName,newImg)
{
// Kann der Browser Bilder wechseln?
if(!document.images) return false;
if(typeof document.imgName) return alert('Fehler!\nDas Bild ' + imgName + 'existiert nicht.');
document.imgName.src = newImg;
if(typeof document[imgName]) return alert('Fehler!\nDas Bild ' + imgName + 'existiert nicht.');
document[imgName].src = newImg;
Dank, an Cheatah ;-)
Struppi.
Hi,
if(typeof document[imgName]) return alert('Fehler!\nDas Bild ' + imgName + 'existiert nicht.');
document[imgName].src = newImg;
<SevenOfNine> effizient. </SevenOfNine>
Dank, an Cheatah ;-)
Gern geschehen. Danke für die gute Umsetzung :-)
Cheatah