Javascript | Events
|
ECMAScript für HTML und XML - Ereignisse (events) | Strategie |
| Attribute | |
| EventListener | |
| x | |
| |
Seite in Arbeit ! |
| Links |
Ausgewählte
|
Event Handler Attribute |
|
Event handlerWenn ein event mit einem eigenen Programm überwacht werden soll, dann ist es günstig, die korrekte Funktion mit einem möglichst einfachen event handler zu testen, ähnlich wie im Beispiel rechts. |
Javascript-Beispiel für eine event handler Funktion:
function eh1() {
alert("Funktion eh1");
}
|
|
Eine Möglichkeit, events bestimmter Elemente zu überwachen, sind
event handler Attribute. Jeder der Attribut-Namen beginnt mit "on", gefolgt vom Namen des events. Live-Test: Klicken sie auf das überwachte Element ! |
Attribut-Beispiel:
<div id="div1" onclick="eh1()">
Überwachtes Element
</div>
|
|
Event handler Attribute eignen sich für einfache Fälle,
z.B. <button>-Elemente (rechts). Mit Standard DOM Methoden ist es möglich, Attribute zu lesen, zu ändern oder neu zu erstellen. Event-Attribute verhalten sich teilweise anders - ihr Werte ist z.B. eine Funktion, kein String. ♦ Details zur Programmierung von Event handler Attributen, mit Live-Test. |
Button-Element mit onclick-Attribut:
<button onclick="eh1()">
Klick !
</button>
|
EventListener |
|
|
Die Standard-Methode zur Überwachung von Ereignissen ist
addEventListener Damit wird die Überwachung eines bestimmten Ereignisses mit einem Element und mit einer handler-Funktion verknüpft. Diese Methode ist sehr flexibel: + Das Event wird nur genau für das bezeichnete Element überwacht. + Es ist möglich für ein Element mehrere Events zu überwachen. |
+ Es ist möglich, das gleiche Event in mehreren Elementen zu überwachen. + Es ist möglich, den Event-handler ganz oder zeitweise abzuschalten und später wieder zu aktivieren. + Die bezeichnete Funktion erhält die event-Daten als Attribut. Allerdings kann die Methode erst nach dem Laden einer Webseite angewendet werden - vorher existieren die adressierten Elemente noch nicht ! Häufig sind Befehle mit diese Methode daher in einem onload-handler enthalten - Dieser handler wird nach dem vollständigen laden der Webseite ausgeführt. |
|
Das Beispiel rechts zeigt, wie die beiden event-handler bereits im HTML-Quelltext
als Attribute definiert werden. ♦ Details zu Maus-Ereignissen. |
Grafik (z.B. Landkarte). Die Maus-Bewegung über der Karte und ein Klick auf die
Karte werden überwacht:
<img src="karte.gif" onmousemove="ehm1()"
onmouseup="ehm2()" style="cursor:pointer;" />
|
|
Rechts wird gezeigt, wie man mit Javascript event-Listener definiert. ► Der vorgestellte Javascript Code wird von einem onload-Handler (hier my_onload) verwendet, weil das adressierte Element (hier n) vorher noch nicht existiert. ► Die Wirkung ist die gleiche wie mit Attributen (oben) - allerdings sind event listener flexibler und können nach dem Laden der Seite beliebig oft modifizierrt werden. |
Die gleiche Grafik ohne Event handler attribute
<body onload="my_onload()">
... <img id="karte" src="karte.gif" style="cursor:pointer;" /> Javascript Definition der event handler:
function my_onload() {
n = document.getElementById("karte");
}
n.addEventListener("mousemove",ehm1,true); n.addEventListener("mouseup",ehm2,true); // ...
|
| M$IE verwendet - wie auch sonst häufig - eine eigene Variante. Die Wirkung ist ähnlich, unterscheidet sich lediglich in den Details der event-Verarbeitung. |
M$IE-Variante (non-Standard) zur Definition der event handler:
n.attachEvent("onmousemove",ehm1);
n.attachEvent("onmouseup",ehm2); |
| So wird ein handler wieder entfernt: |
Standard-Variante
n.removeEventListener("mousemove",ehm1,true);
M$IE-Variante
n.detachEvent("onmousemove",ehm1);
|
event als ArgumentDie im EventListener bezeichnete Funktion erhält das event und damit alle seine Daten als Argument. |
Das ist wichtig, z.B. für die Auswertung der Maus-Koordinaten in der eigenen event handler Funktion. ♦ Live Demo-Beispiel: Location Library ♦ Details zu Maus-Ereignissen. |
Kapitel |
|
|
var msie = document.all?true:false; if (!msie) {document.captureEvents(Event.MOUSEMOVE);} document.onmousemove = ehm3; |
// NS4 element.captureEvents() ; |
|
|
| Quirksmode: Advanced event registration models (en) | |
|