CR: JS und IE3

Hi !

So langsam bringe mich die beiden Browser zum Wahnsinn ....

Ok - ich habe vor (wie wohl viele heutzutage) animiert Buttons einzubauen.

folgender code wird im HEAD-Tag geladen:
if (document.images) {    
    Normal1 = new Image();
    Normal1.src = "navi_back.gif"; /* Hier erste Standard-Grafik angeben */
    Highlight1 = new Image();
    Highlight1.src = "navi_back_h.gif"; /* Hier erste Highlight-Grafik angeben */
}

function Bildwechsel(Bildnr,Bildobjekt)
    {
     if (document.images) {
          window.document.images[Bildnr].src = Bildobjekt.src;
     }
    }

Aufgerufen wird das folgendermaßen

<A HREF="4fun.htm" onMouseOver="Bildwechsel(4,Highlight1)" onMouseOut="Bildwechsel(4,Normal1)"><IMG SRC="navi_back.gif" WIDTH="85" HEIGHT="20" ALT="Zurück" HSPACE=0 VSPACE=0 BORDER=0></A>

Sieht doch eigentlich gaaaanz normal aus, oder etwa nicht?

Nun - Netscape, Opera und der IE4 machen keine Probleme. Der IE3.02 meckert, daß Highlightx kein Object ist - und zwar in der aufrufenden Zeile(!).

Wie gewöhne ich dem das denn ab???

Danke schon mal  ....

Ciao
CR

  1. So langsam bringe mich die beiden Browser zum Wahnsinn ....

    In einer uralten Werbung hiess es immer "Na, na, wer wird denn gleich in die Luft gehen?" :-)

    folgender code wird im HEAD-Tag geladen:
    if (document.images) {    
        Normal1 = new Image();
        Normal1.src = "navi_back.gif"; /* Hier erste Standard-Grafik angeben */
        Highlight1 = new Image();
        Highlight1.src = "navi_back_h.gif"; /* Hier erste Highlight-Grafik angeben */
    }
        function Bildwechsel(Bildnr,Bildobjekt)
        {
         if (document.images) {
              window.document.images[Bildnr].src = Bildobjekt.src;
         }
        }
    <A HREF="4fun.htm" onMouseOver="Bildwechsel(4,Highlight1)" onMouseOut="Bildwechsel(4,Normal1)"><IMG SRC="navi_back.gif" WIDTH="85" HEIGHT="20" ALT="Zurück" HSPACE=0 VSPACE=0 BORDER=0></A>
    Sieht doch eigentlich gaaaanz normal aus, oder etwa nicht?

    Fast.

    Nun - Netscape, Opera und der IE4 machen keine Probleme. Der IE3.02 meckert, daß Highlightx kein Object ist - und zwar in der aufrufenden Zeile(!).

    Der meckert berechtigt.
    Du hast zwar in den Scripts immer gefragt, ob denn wirklich document.images bekannt ist, um aeltere Browser davon abzuhalten, dort auf Fehler zu laufen. Das ist ganz i.O. so.
    Aber dummer Weise verwendest Du im Aufruf  mit Highlight1 so ein unbekanntes Objekt.
    MSIE3.x kennt onmouseover, versucht also, da was auszufuehren.
    Aber Highlight1 kennt er nicht. Das definierst Du ja nur bei anderen Browsern. Also schimpft er.

    Wie gewöhne ich dem das denn ab???

    Was kann man machen? Zwei Ideen:
    1.
    Man uebergibt der Funktion nicht das Objekt selbst, sondern nur ein Kennzeichen (numerisch, String, volllkommen gleich). Das wertet man dann eben in der Funktion aus, waehlt danach das gerade benoetigte Image-Objekt.
    2.
    Man uebergibt z.B. "Highlight1" als String, nicht direkt als Objekt. In der Funktion macht man daraus per eval() erst ein Objekt.
    Muesste an sich beides funktionieren.

    Christine

    1. Hi Christine !

      Vielen Dank erstmal für die Tips. Ich habe mir aber anders geholfen.
      Da die animierten Buttons recht zahlreich sind, wäre eine ziemlich üble Massenersetzungsaktion über alle Seiten fällig geworden. Ich habe also den Stier bei den Hörner gepackt - im Scriptteil. (Damit reduziert sich die Ersetzung auf ein Minimum.)
      Ich habe einfach vor der Definition der einzelnen Bilder die jeweiligen Variablen als Dummies deklariert .... Damit hat der IE3 was er will und meckert nun nicht mehr .....

      Ciao
      CR