molily: Fehler in Javascript durch eventObjekt

Beitrag lesen

alert (typeof eventObjekt);
if (typeof eventObjekt != "undefined")         // W3C-Standard
  {
   window.addEventListener ("load", init, false);
   function init()
     {
             .............
     }
  }
else                                       // Internet Explorer
  {
   window.attachEvent ("load", init);
   function init()
     {
             ..............
     }
  }

  
Da hast du zwei Dinge zusammengeworfen:  
  
1\. Das Registrieren von Handler-Funktionen  
2\. Das Verarbeiten von Events in Handler-Funktionen  
  
1\. Die Registrierung: Da notierst du die Handlerfunktion außerhalb der Fähigkeiten-Weiche:  
  
function init (e) {...}  
  
if (window.addEventListener) {  
   window.addEventListener("load", init, false);  
} else if (window.attachEvent) {  
   window.attachEvent("onload", init);  
}  
  
Das ist soweit alles. Das Event-Objekt hat mit der Registrierung nichts zu tun.  
  
2\. Die Verarbeitung. Jetzt kommt das Event-Objekt ins Spiel! Das gibt es logischerweise nur in der Handler-Funktion, hier »init« - nicht zu dem Zeitpunkt, wo du die Event-Überwachung erst startest, aber noch gar kein Event eingetreten ist.  
  
Die Handlerfunktion nimmt das Event-Objekt als Parameter entgegen. DARIN solltest du schreiben:  
  
function init (e) {  
   if (!e) e = window.event;  
   // Mach was mit e  
}  
  
Beispiel aus <http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#event-objekt>:  
  
~~~javascript
function handlerfunktion (eventObjekt) {  
   // Vereinheitlichung:  
   if (!eventObjekt) {  
      // Korrektur für den Internet Explorer  
      eventObjekt = window.event;  
   }  
   ...  
}

Im Übrigen brauchst du die Handlerfunktion init nicht doppelt zu notieren. Notiere sie außerhalb der Abfrage if (document.addEventListener) {} else if (document.attachEvent) {}.

Mathias