L'idée générale est que window.onload se déclenche lorsque la fenêtre du document est prêt pour la présentation y document.onload se déclenche lorsque le L'arbre DOM (construit à partir du code de balisage du document) est terminé .
L'idéal serait de s'abonner à Événements DOM-tree permet des manipulations hors écran par le biais de Javascript, ce qui implique charge CPU quasi nulle . Au contraire, window.onload
puede mettent 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 comment votre navigateur de choix met en œuvre le susmentionné les gestionnaires d'événements il suffit d'insérer le code suivant dans le fichier - de votre document. <body>
- étiquette.
<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).
- Non
document.onload
événement.
-
onload
se déclenche deux fois lorsqu'il est déclaré à l'intérieur de l'élément <body>
une fois lorsqu'il est déclaré à l'intérieur de l'élément <head>
(où l'événement fait alors office de document.onload
).
- compter et agir en fonction de l'état du compteur permet d'émuler les deux comportements d'événements.
- Une autre solution consiste à déclarer le
window.onload
dans les limites du code HTML. <head>
élément.
►Exemple de projet :
Le code ci-dessus est extrait de de ce projet codebase ( index.html
y keyboarder.js
).
Pour une liste de les gestionnaires d'événements de l'objet fenêtre veuillez vous reporter à la documentation MDN.
3 votes
La documentation du MDN les explique
window
événements :onload
yDOMContentLoaded
. Exemple d'utilisation : ,window.addEventListener('DOMContentLoaded', callback)
. À partir de mi 2019, compatible avec tous les principaux navigateurs. ----- developer.mozilla.org/fr/US/docs/Web/API/Window/ ------ developer.mozilla.org/fr/US/docs/Web/API/Window/load_event0 votes
Pour moi encore, dans Firefox 75.0 aujourd'hui,
window.onload
ydocument.onload
son différents l'un de l'autre !window.onload
semble avoir lieu après et est un peu plus chargée quedocument.onload
! (Certaines choses fonctionnent avec la fenêtre qui ne fonctionnent pas avec le document ! Cela vaut également pour document.onreadstatechange 'complete').