Hallo Matthias
molily empfiehlt den ausschließlichen Einsatz von addEventListener, um unobtrusive JavaScript zu erhalten.
Naja, das Prinzip des unobtrusive JavaScript disqualifiziert – zumindest nach meinem Verständnis des Begriffs – höchstens die Registrierung von Eventhandlern über HTML-Attribute, erfordert aber wohl im engeren Sinne nicht unbedingt den Einsatz der Methode addEventListener
, jedenfalls sofern man hier die Anwendung von best practices nicht als zwingende Voraussetzung betrachtet.
Inwieweit könnt ihr in fest umgrenzten Fällen wie kleinen Projekten ein Hinzufügen von Eventhandlern mit der Punkt-Notation noch (oder doch) empfehlen?
var startBtn = document.getElementById('start'); startBtn.onclick = function(){ // Code-Anweisungen }
Mitentscheidend ist hier wohl die Frage, was unter „fest umgrenzt“ zu verstehen sein soll. Ich meine, wie heißt es so schön: „Vorhersagen sind schwierig, besonders wenn sie die Zukunft betreffen.“ Sprich, in der Regel dürfte es kaum mit Sicherheit absehbar sein, ob ein zunächst mal ‚kleines‘ Projekt nicht an einem späteren Zeitpunkt doch noch skaliert.
Die Methode addEventListener
ist gegenüber der Registrierung mittels Eigenschaftszuweisung deutlich robuster und sollte, auch um mögliche zukünftige Erweiterungen zu antizipieren, grundsätzlich empfohlen werden, unabhängig vom anfänglichen Umfang eines Projektes.
Verwendet Ihr überhaupt noch onload oder eher DOMContentLoaded?
window.onload; // oder document.addEventListener("DOMContentLoaded", dokumentGeladen, false);
Wie Gunnar bereits sagte, sind die Ereignisse load
und DOMContentLoaded
zwei verschiedene Paar Schuhe, das heißt, die Verwendung des ein oder anderen Ereignistyps hängt davon ab, was im Einzelfall gebraucht wird, sprich, genügt es in das Programm einzusteigen, wenn das DOM fertig geladen und geparst wurde oder muss damit gewartet werden, bis wirklich alle Ressourcen geladen sind.
Zu beachten ist hierbei übrigens, dass es keine entsprechende Objekteigenschaft für das Ereignis DOMContentLoaded
gibt, dass heißt, eine Überwachung dieses Ereignisses muss ohnehin mittels der Methode addEventListener
erfolgen!
Schließlich sei an dieser Stelle noch erwähnt, dass der dritte Parameter für das Capturing bei der Methode addEventListener
optional ist und false
dessen Defaultwert, man sich diese Angabe mithin also sparen kann. Aber das nur am Rande. ;-)
Viele Grüße,
Orlok