Medimax: Problem mit IE6 & Bilderwechsel!

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-->

  1. 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

    --
    X-Will-Answer-Email: No
  2. Und wie geht es denn nun richtig?!?

    VG Medimax

    1. 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

      --
      X-Will-Answer-Email: No
  3. 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.

    1. 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

      --
      X-Will-Answer-Email: No
    2. 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.

      1. 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

        --
        X-Will-Answer-Email: No