Hallo,
wird übrigens eine unaufdringlichere Methode zum Setzen der Eventhandler onmousedown eingesetzt. Hier benötigt man keine Attribute mehr im HTML-Code. Außerdem wird es hier einfacher, die Eventhandler so zu notieren, dass das Event-Objekt auch bei Standardkonformen Browsern mit übergeben wird.
Eine Frage noch hierzu: wie wäre es nicht komform bzw. was genau meinst du mit dem letzten Satz?
Ist das this-Objekt im HTML onmousedown nicht standardkomform?
Mit dem this-Objekt hat das nur indirekt zu tun. Es geht darum, dass einige Eventhandler-Funktionen das Event-Objekt auswerten bzw. manipulieren müssen. Dazu müssen sie aber Zugriff darauf haben. Im Microsoft IE ist das Event-Objekt immer als Eigenschaft des window-Objekts greifbar mit window.event
. Das ist aber nicht Standard. In standardkonformen Browsern (Mozilla bspw.) wird das Event-Objekt automatisch der Eventhandler-Funktion als Parameter übergeben. Das ist der Parameter e in meiner Funktion reagiereAufEventUndLeiteIhnNichtWeiter(e)
.
Mit der von mir gezeigten Methode der Zuweisung von Eventhandler-Funktionen via window.onload
muss man die Eventhandler-Funktionen als Referenzen zuweisen. Man schreibt einfach:
document.getElementById("aussen").onmousedown = reagiereAufEventUndLeiteIhnNichtWeiter;
Parameter, welche die Funktion automatisch zugewiesen bekommt, müssen hier nicht notiert werden.
Will man das selbe per HTML-Attribut machen muss man die Funktion als Funktionsaufruf (mit Klammern) schreiben:
<div id="innen" onmousedown="reagiereAufEventUndLeiteIhnNichtWeiter()">
Dabei werden aber nun grundsätzlich _keine_ Parameter übergeben, auch nicht automatisch das Event-Objekt. Es gibt dann sicherlich auch wieder Möglichkeiten da trotzdem ranzukommen. Dazu ist aber zusätzlicher Aufwand nötig.
Auf das this hat das insoweit Einfluss, als this innerhalb der Eventhandler-Funktion im Fall
document.getElementById("aussen").onmousedown = reagiereAufEventUndLeiteIhnNichtWeiter;
auf das Objekt zeigt, welches den Event ausgelöst hat. Im Fall
<div id="innen" onmousedown="reagiereAufEventUndLeiteIhnNichtWeiter()">
zeigt this innerhalb der Eventhandler-Funktion auf das window-Objekt. Man kann dort also nicht einfach in der Funktion auf this.id
zugreifen, sondern müsste das auch wieder als Parameter übergeben.
Oder generell die Zuweisung von Events im <html-objekt>?
Du meinst die Zuweisung von Events über HTML-Attribute wie in: <div id="innen" onclick="machwas()">
? Nein, das ist nur nicht besonders schön und manchmal hinderlich, wie oben beschrieben. Die Eventhandler-Attribute sind aber durchaus im HTML-Standard enthalten.
viele Grüße
Axel