Sven Rautenberg: NC 4x nimmt kein onMouseOver wenn absolut positioniert (CSS)

Beitrag lesen

Moin!

habe folgendes Problem. Ein Bild steht innerhalb eines <div>-Tags, indem wiederum ein style definiert wird, der das Bild absolut positioniert. Das macht der 4er Netscape soweit ja auch ganz fein. Allerdings kann ich den Bildern dann kein onMouseOver mehr zuweisen. Jedenfalls keinen mehr, der die Quelle für das Bild ändert...

Doch, das Mouseover funktioniert ganz wunderbar. Wenn du in die Funktion mal ein "alert('es geht');" reingeschrieben hättest, wäre dir das auch aufgefallen.

Das Problem ist: Netscape sieht den Layer als eigenständiges Dokument an.

Du mußt also nicht mit
document.images...
zugreifen, sondern mit
document.layers['layername'].document.images...
bzw.
document.layername.document.images...

Das aber NUR, wenn es sich um Netscape 4 handelt. Zum Glück kriegt man das bei diesem Problem relativ einfach raus:
if (document.layers)
{
//Netscape4-Lösung
}
else
{
//normale Lösung
}

Für dein Bildtauschscript bedeutet das: Entweder hast du nur Bilder innerhalb eines Layers zu tauschen, dann kannst du den Layernamen fest in die Funktion schreiben, oder du hast verschiedene Layer - dann mußt du den Layernamen eben der Funktion mit übergeben, so wie hier:

function changeImage(imgName,imgObj,layerid)
  {
  if (document.images[imgName])
    {
    document.images[imgName].src = eval(imgObj+".src");
    }
  else if (document.layers)
    {
    document.layers[layerid].document.images[imgName].src = eval(imgObj+".src");
    }
  }

Diese Funktion prüft, ob es das Bild gibt, und wenn nicht, dann kann es sich eben noch um Netscape 4 handeln, der Extrabehandlung benötigt. Der Test auf die Existenz des Bildes verhindert unschöne Javascript-Fehler, wenn man sich mal vertippt hat oder irgendwas schiefläuft.

- Sven Rautenberg