Christine Kuehnel: JS und IE3

Beitrag lesen

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