L'idée générale est que window.onload se déclenche lorsque la fenêtre du document est prête pour la présentation et document.onload se déclenche lorsque l' arborescence DOM (créée à partir du code de balisage dans le document) est terminée .
Idéalement, la souscription aux événements de l'arborescence DOM permet des manipulations hors écran via Javascript, n'encourageant presque aucune charge CPU . Au contraire, cela window.onload
peut prendre un certain temps à se déclencher , lorsque plusieurs ressources externes doivent encore être demandées, analysées et chargées.
► Scénario de test:
Pour observer la différence et la façon dont votre navigateur de choix implémente les gestionnaires d'événements susmentionnés , insérez simplement le code suivant dans la <body>
balise - - de votre document .
<script language="javascript">
window.tdiff = []; fred = function(a,b){return a-b;};
window.document.onload = function(e){
console.log("document.onload", e, Date.now() ,window.tdiff,
(window.tdiff[0] = Date.now()) && window.tdiff.reduce(fred) );
}
window.onload = function(e){
console.log("window.onload", e, Date.now() ,window.tdiff,
(window.tdiff[1] = Date.now()) && window.tdiff.reduce(fred) );
}
</script>
►Résultat:
Voici le comportement résultant, observable pour Chrome v20 (et probablement la plupart des navigateurs actuels).
- Aucun
document.onload
événement.
onload
se déclenche deux fois lorsqu'il est déclaré à l'intérieur du <body>
, une fois lorsqu'il est déclaré à l'intérieur du <head>
(où l'événement agit alors comme document.onload
).
- compter et agir en fonction de l'état du compteur permet d'émuler les deux comportements événementiels.
- Vous pouvez également déclarer le
window.onload
gestionnaire d'événements dans les limites de l' <head>
élément HTML .
►Exemple de projet:
Le code ci-dessus est tiré de la base de code de ce projet ( index.html
et keyboarder.js
).
Pour une liste des gestionnaires d'événements de l'objet window , reportez-vous à la documentation MDN.
window
événements:onload
etDOMContentLoaded
. Exemple d'utilisation:,window.addEventListener('DOMContentLoaded', callback)
. À partir de la mi-2019, compatible avec tous les principaux navigateurs. ----- developer.mozilla.org/en-US/docs/Web/API/Window/… ------ developer.mozilla.org/en-US/docs/Web/API/Window/load_event