molily: onMouse-Events in div für Netscape/Firefox

Beitrag lesen

Hallo,

<SCRIPT language="javascript">

<script type="text/javascript">

function rollon() {
    if (event.srcElement.className == "item") {
       event.srcElement.className = "highlight";
       document.all("g0text").style.display = "none";

1. Firefox erlaubt den Zugriff auf das Event-Objekt nicht über window.event, sondern die Handler-Funktionen bekommen das Event-Objekt als Parameter übergeben. So hast du in allen Browsern auf das Event-Objekt Zugriff:
function Handler (Eventobjekt) {
  if (!Eventobjekt)
    Eventobjekt = window.event;
  alert(Eventobjekt);
  /* ... */
}

2. srcElement ist ebenso wie window.event eine Microsoft-Erfindung, im Netscape und anderen Browsern heißt die Eigenschaft target. So hast du in allen Browsern auf das Zielobjekt Zugriff:
var Zielobjekt = false;
if (Eventobjekt.target) {
  Zielobjekt = Eventobjekt.target;
} else if (Eventobjekt.srcElement) {
  Zielobjekt = Eventobjekt.srcElement;
}
alert(Zielobjekt);

3. document.all ist ebenso wie window.event und srcElement eine Microsoft-Erfindung und wird von Firefox zwar unterstützt, aber du solltest hier document.getElementById() verwenden.
if (document.getElementById) {
  document.getElementById(Zielobjekt.id + "text").style.display = "";
} else if (document.all) {
  document.all(Zielobjekt.id + "text").style.display = "";
}

<div style="width:165px" onMouseover="rollon()" onMouseout="rolloff()"

Wenn du die Event-Handler im HTML zuweist, kommst du im Firefox nie an das Event-Objekt. Du musst sie über JavaScript vergeben, also z.B. Elementobjekt.onmouseover = rollon;. Für den Zugriff auf das Elementobjekt kannst du wieder getElementById() usw. verwenden, siehe http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#allgemeines.

Mathias