IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Mais comment le moteur javascript charge-t-il le code ?


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Mars 2009
    Messages
    32
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par d�faut Mais comment le moteur javascript charge-t-il le code ?
    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 : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    (function(leParametre){
     mon code ici
    })(monParametre);
    ou simplement

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    (function(){ mon code ici })();
    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.

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    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)


    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 !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Je pense qu'il y a une petite confusion...
    Tu dois parler de ce type de code:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $(function(){ mon code ici });
    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

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    (function(foo){alert(foo)})('hello')
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de D�veloppez !

  4. #4
    Membre averti
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Mars 2009
    Messages
    32
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par d�faut
    Je fais bien ref�rence �
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    (function(foo){alert(foo)})('hello')
    Donc si je vous suis bien, le code javascript est execut� (si ex�cutable, tel le code ci-haut) au moment o� il est rencontr� lors du chargement de la page.

    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?

  5. #5
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    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

  6. #6
    Membre averti
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Mars 2009
    Messages
    32
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par d�faut
    Merci sekaijin !


    Je met le thread � r�solu mais je continuerai � recevoir vos r�ponse. :-)

  7. #7
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    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 !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  8. #8
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AJAX] Comment d�bugger un javascript qui est charg� via Ajax ?
    Par Walkn dans le forum jQuery
    R�ponses: 11
    Dernier message: 03/11/2012, 01h32
  2. Comment changer le moteur javascript ?
    Par nico-pyright(c) dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 27/04/2006, 18h48
  3. un simple break; mais comment ??
    Par kmaniche dans le forum C++
    R�ponses: 2
    Dernier message: 14/02/2006, 22h33
  4. R�ponses: 4
    Dernier message: 13/12/2005, 18h14
  5. HomeDB, oui mais comment ?
    Par Gregouz dans le forum D�cisions SGBD
    R�ponses: 1
    Dernier message: 27/10/2004, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo