Utz Grimminger: Workaround für Probleme mit Script aus der Forumsauslese

Beitrag lesen

Hallo liebes Forum!

Am Rande eines eigentlich ganz anderen Threads tauchte letzte Woche ein Problem mit dem Forumsauslese-Script für MouseOver-Bildwechsel bei absolut positionierten Elementen http://www.teamone.de/selfhtml/sfausles/tsfa_tbb.htm auf.
Das Problem besteht darin, dass NN 3.02 wegen der switch()-Elemente - obwohl sie in Browser-Abfragen drinstecken und eigentlich für ihn unsichtbar sein müssten! - aus der Kurve fliegt.

Ich hab mich des Problems angenommen und hier ist - für die, die es interessiert - eine Lösung, die mit NN 2.02, NN 3.02, NC 4.03, NC 4.6 und IE 4.0 getestet wurde. Bei NN 2.02 und 3.02 gibt's zwar keine Bildwechsel, aber immerhin auch keine Fehlermeldungen.

<SCRIPT LANGUAGE="JavaScript">
    <!--
    var Normal1;
    var Highlight1;
    var Normal2;
    var Highlight2;
    //-->
</SCRIPT>

*ERKLÄRUNG: Ohne diese Variablendefinition fliegt NN 2.02 aus der Kurve*

<SCRIPT LANGUAGE="JavaScript1.1">
    <!--
    Normal1 = new Image();
    Normal1.src = "bild-a1.gif";
    Highlight1 = new Image();
    Highlight1.src = "bild-a2.gif";

Normal2 = new Image();
    Normal2.src = "bild-b1.gif";
    Highlight2 = new Image();
    Highlight2.src = "bild-b2.gif";
    //-->
</SCRIPT>

*ERKLÄRUNG: Wie im Ausgangsskript, nur dass JavaScript1.1 spezifiziert wurde, denn sonst fliegt NN 2.02 aus der Kurve*

<SCRIPT LANGUAGE="JavaScript">
    <!--
    function Bildwechsel( BildName, BildObjekt )  {
      if (document.layers)  {
        nc4 ( Index, Bild);
      }
      else if (document.all)  {
        ie ( Index, Bild);
      }
      else {};
    }
    //-->
</SCRIPT>

*ERKLÄRUNG: Im Ausgangsskript stolpert NN 3.02 über die switch()-Angaben, obwohl eigentlich innerhalb Browser-Abfragen; die Angabe einer höheren JavsaScript-Version geht nicht, da sonst die Funktion als undefiniert gilt - Fehlermeldung!
Deshalb werden hier je nach Browser Unterfunktionen aufgerufen; ältere Browser machen die Tu-Nix-Funktion am Ende und sind glücklich und zufrieden.*

<SCRIPT LANGUAGE="JavaScript1.2">
     <!--
     function nc4( BildName, BildObjekt ) {
          switch ( BildName ) {
            case 'AltaVista' : window.document.DIV0.document.AltaVista.src = BildObjekt.src;
                               break;
            case 'Lycos' :     window.document.DIV0.document.Lycos.src = BildObjekt.src;
                               break;
          }
     }
     //-->
</SCRIPT>

*ERKLÄRUNG: Bildwechsel-Syntax für NC ab 4.0, in JS1.2, damit ältere NN nicht über das switch() maulen.*

<SCRIPT LANGUAGE="JavaScript1.2">
     <!--
     function ie( BildName, BildObjekt ) {
        switch ( BildName ) {
          case 'AltaVista' : window.document.all.AltaVista.src = BildObjekt.src;
                             break;
          case 'Lycos' :     window.document.all.Lycos.src = BildObjekt.src;
                             break;
        }
      }
      //-->
</SCRIPT>

*ERKLÄRUNG: Das selbe für IE ab 4.0 - wer sich wundert: ja, tatsächlich JavaScript1.2, kann der IE 4.0 zwar offiziell nicht, trotzdem geht es so!*

So, das ganze ist jetzt zwar hübsch kompliziert, funzt aber mit NC und IE ab 4 und gibt keine Fehlermeldungen mit NN 2 und 3. Mit IE 3 konnte ich es mangels Browser nicht testen.

Über Anregungen, wie das vielleicht eleganter zu gestalten wäre, würde ich mich freuen!

Grüße,

Utz