|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Développeur Web Inscription : mars 2009 Messages : 22 ![]() |
Bonjour,
Quelqu'un pourrait-il m'expliquer, ou me diriger vers l'explication, comment le moteur javascript charge le code puis execute celui-ci? Ce que je sais pour le moment est que le code peux s'exécuter à deux moment: 1) quand le document est prêt (tout le code est chargé mais pas toutes les ressources telles les images) 2) toute la page (window) est prête (le code et les ressources sont chargés) Mais que se passe t'il avant? Un exemple de mon incompréhension est le code suivante: Code :
Ceci est régulièrement utilisé avec jQuery... On me dit que cela est utilisé (éxécuté?!) lors du chargement du code. Personellement je pense que cela se ferait au document ready, mais je n'en sais rien. Y a t'il d'autre "moment" dans le "page loading process" ? Merci d'avance pour toute explication. |
||
|
|
00
|
|
|
#2 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
![]() En fait, le navigateur possède un interpréteur HTML et un interpréteur JavaScript. Pendant que la page se crée, si l'interpréteur HTML rencontre une balise <script>, il donne la main à l'interpréteur JavaScript et attend bien sagement. Le moteur JavaScript charge (si besoin) le script, le compile et l'interprète, éventuellement lance des message s'il rencontre des erreurs de syntaxe, si le script comporte du code en dehors d'une fonction, ce code est exécuté. Ensuite il rend la main à l'interpréteur HTML. Le code est donc chargé au moment où il est trouvé dans la page et c'est dans la partie hors fonction que sont généralement placés les gestionnaires d'événements onload, onDOMReady etc. qui servent à jQuery par exemple à pouvoir s'exécuter quand la page est prête.
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#3 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 018 ![]() |
Je pense qu'il y a une petite confusion...
Tu dois parler de ce type de code: En jquery $() est un réaccourci pour $(document).ready() sinon pour lancer une fonction il suffit de l'appeler par son nom suivi de () contenant eventuellement des paramètres. Ce qui entraine la possibilité d'un execution immediate de la fonction comem suit au moment de l'interprétation du code
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#4 | ||
|
Candidat au titre de Membre du Club
![]() Développeur Web Inscription : mars 2009 Messages : 22 ![]() |
Je fais bien reférence à
Code :
Merci beaucoup! EDIT: Je comprends que jQuery attend que onDOMReady ou onLoad soient déclanchés. Par curiosité, quels sont les autres événements déclenchés dans le processus de chargement? |
||
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
l'interprète Javascript est en fait une machine virtuelle avec un compilateur.
le moment où le code va être exécuté dépend de l'attribut defered. quoi qu'il arrive la première chose c'est le chargement du code source. même s'il est defered le compilateur s'il dispose de temps vas prècompiler le code. il vas référencer des élément du code sans pour autant les compiler complètement. par exemple pour une définition de fonction il va référencer la fonction sans en compiler le code. si la balise n'est pas defered il exécute le code et compile à la volée les fonctions utilisées. si le code est défered il continue avec les balise suivantes. ensuite il exécute dans l'ordre d'apparition les scripts defered. la page fini de se charger et le gestionnaire d'événement entre en jeux. s'éxécute alors dans le désordre (c'est le moteur qui décide) tous les handler liés à chaque événements. en clair les listeners associés à un événement sont tous exécuté avant de passé à l'événement suivant. mais l'ordre des listeneur de cet événement n'est pas garanti. A+JYT |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Développeur Web Inscription : mars 2009 Messages : 22 ![]() |
Merci sekaijin !
Je met le thread à résolu mais je continuerai à recevoir vos réponse. :-) |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
sekaijin : defer n'est pas cross-browser comme attribut
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com