Je viens de réaliser que je n'ai pas les connaissances fondamentales de ce qui se passe exactement lorsqu'une page est chargée dans un navigateur.
Supposons que j'ai une structure comme celle-ci :
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="first.js" type="text/javascript"></script>
</head>
<body>
...
<script type="text/javascript" id="middle">
// some more JS here...
</script>
...
<script src="last.js" type="text/javascript"></script>
</body>
Voici les questions que je me pose :
-
Dans quel ordre les choses se passent-elles ? On exécute d'abord le DOM puis le JS, est-ce l'inverse, ou est-ce simultané (ou dès que les fichiers JS finissent de se télécharger, sans tenir compte du DOM) ? Je sais que les scripts sont chargés dans l'ordre.
-
Où se trouve
$(document).ready()
s'intégrer ? Dans l'onglet Net de Firebug, je voisDOMContentLoaded
et l'événementload
événement. Est-ce que$(document).ready()
déclenché lorsque leDOMContentLoaded
se déclenche ? Je n'ai pas trouvé d'informations concrètes à ce sujet (tout le monde se contente de mentionner "lorsque le DOM est chargé"). -
Que signifie exactement "lorsque le DOM est chargé" ? Que tout le HTML/JS a été téléchargé et analysé par le navigateur ? Ou seulement le HTML ?
-
Le scénario suivant est-il possible : il y a un
$(document).ready()
qui appelle le code danslast.js
mais s'exécute avant que last.js ne soit chargé ? Où se trouverait-il le plus probablement (dansfirst.js
ou le bloc de code en ligne) ? Comment puis-je éviter ce scénario ?
Je veux comprendre le tableau d'ensemble de ce qui se passe quand et de ce qui dépend de quoi (le cas échéant).