window.onload oder addEventListener('load', );
bearbeitet von
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?
>
> ~~~ javascript
> 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?
>
> ~~~ javascript
> window.onload;
>
> // oder
>
> document.addEventListener("DOMContentLoaded", dokumentGeladen, false);
> ~~~
Wie Gunnar [bereits sagte](https://forum.selfhtml.org/self/2015/nov/17/window-punkt-onload-oder-addeventlistener-load/1654771#m1654771), 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 – zumindest meines Wissens nach – 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`{: .language-javascript} dessen Defaultwert, man sich *diese* Angabe mithin also sparen kann. Aber das nur am Rande. ;-)
Viele Grüße,
Orlok