JavaScript – M+T Pocket . Das Programmier-Handbuch (Office Einzeltitel) [Taschenbuch]

7.1
Was ist ein Ereignis?

Während des "Lebens" einer Webseite, aber auch des
Ablaufs eines Programms/Scripts, treten immer wieder gerade spezifizierbare
Situationen auf, die man konkret fassen kann. Dies kann mit in Anwenderaktionen
und automatische Vorgänge, die von einer Zeitspanne oder einem Zeitpunkt
abhängen oder aufgrund von gewissen anderen Bedingungen ausgelöst werden,
unterteilen.

Wenn ein komplexeres Programm/Script (besonders in einer
grafischen Umgebung) abläuft, wird es nur selten so programmiert sein, dass
sämtliche Schritte vordefiniert ohne Interaktion mit der Umgebung ablaufen
können. Insbesondere der Anwender greift bei umfangreicheren Programmen in den
Auflauf ein. Etwa wenn er ein Fenster vergrößert oder eine Schaltfläche drückt.
Oder eine Taste bestätigt. Jede dieser Situationen kann man in einer Webseite
nutzen, gezielt eine Reaktion darauf erfolgen zu lassen. Diese weiter
verwendbaren Situationen werden Ereignisse oder englisch Events genannt. Unter
einem Ereignis kann man speziell auf eine HTML-Seite bezogen alles verstehen,
was während der Lebenszeit einer Webseite in einem Browser auftreten kann. Vom
Laden in den Browser bis zum Entfernen der Seite aus dem Browser – letzteres
etwa beim Laden einer neuen Seite, aber auch beim Beenden des Browsers. Jede
spezifizierbare Situation sorgt für das Eintreten eines Events, eines
Ereignisses, das im System beobachtet und worauf reagiert werden kann. Die
Reaktion auf solche Events wird Ereignisbehandlung oder Eventhandling genannt.

Ereignisbehandlung kann in JavaScript einmal als der
klassische Fall des Abarbeitens aller ausführbaren Kommandos beim Laden
interpretiert werden. Das ist wie schon erwähnt der einfachste Fall. Eine
weitere Variante von Ereignisbehandlung ist die Inline-Referenz, wo ein
Scriptaufruf einfach als Argument eines Links notiert wird (siehe dazu Seite 65).

Der aber allgemein meist mit Ereignisbehandlung in
Verbindung gebrachte Begriff ist derjenige, welcher Event-Handler genannt wird. Oder aber die Behandlung des Event-Objektes. Diese haben weniger
miteinander zu tun, als die begriffliche Ähnlickeit suggeriert.

Die Ereignisbehandlung weicht in verschiedenen Browsern
erheblich ab. Es gibt verschiedene Ereignismodelle von den Herstellern der
Scriptsprachen und der Browser gibt und auch HTML wird teils vollkommen
verschieden ausgelegt. Dazu kommen teilweise extreme Abweichungen zwischen
verschiedenen Versionen des gleichen Browsers. Das wird dazu führen, dass
zahlreiche Ereignisse, die in einem Browser unterstützt werden, in einem
anderen ignoriert werden. Insbesondere die Verwendung von dem Event-Objekt
kann zu heftigsten Fehlermeldungen und sogar zu Browser-Abstürzen führen,
wenn eine solche Seite im "falschen" Browser geladen wird. Wenn man
auf solche Event-Behandlungstechniken zurückgreift, die explizit nur in einem
Browserkonzept unterstützt werden, muss man unbedingt (!) die Browserwelten
trennen. Es gibt im Wesentlichen drei (abweichende bis teilweise sogar
vollkommen inkompatible) Konzepte, welche die Ereignisbehandlung beschreiben.
Da ist einmal der offizielle Entwurf vom W3C, dann das alte und auch das neue
Netscape-Modell und natürlich ein Microsoft-Entwurf. Grundsätzlich ist die Microsoft-Variante
auf den ersten Blick am leistungsfähigsten, aber das relativiert sich, wenn
man JavaScript und das allgemeine Konzept von Ereignisbehandlung besser
verstanden hat. Das Mehr an Leistung im Microsoft-Modell lässt sich im
(alten) Netscape-Modell durch wenige Programmiertricks fast vollkommen
kompensieren.