11548 sujets

JavaScript, DOM et API Web HTML5

Les balises html sont chargées dans l'ordre, donc si on a par exemple 20k de scripts, cela ferat tarder la page avant de voir quoique ce soit, c'est pour ça, il me semble que beaucoup de site avec de grosse bibliothéque, reste un moment tout blanc avant leur ouverture.

Donc la question est : est ce génant de mettre les balises script a la fin du code, en admettant bien sur que les appels sur ces scripts sont systématiquement aprés ceux-ci?

Comme ça cela permettrais d'avoir tout d'abord le code html est ensuite les javascript, le chargement serait plus agréable.
Heu je ne pense pas... (comment vont faire les navigateurs pour comprendre ?) mais pourquoi ne mets-tu pas tes scripts en fichiers externes ? Smiley biggrin
Ils sont dans des fichiers externes mais même comme ça j'ai remarqué que leur position influe sur le chargement, c'est logique comme le navigateur est obligé de les charger pour qu'il soient accessibles au moment de la lecture du code html.

Donc je me disait que pourquoi pas les mettres a la fin du code et comme les fonction seront soit appelées aprés soit avec window.onload, ça marche quand même.

Le validateur w3c n'y voit pas d'inconvénient et les touts les navigateurs semble trés bien comprendre, mais bon je me demandais si ça pouvait poser d'autre problémes.
Modifié par matmat (23 May 2007 - 23:18)
Bonsoir matmat,

Il me semble que l'appel aux scripts ne se fait pas obligatoirement dans l'élément head mais peut aussi se faire dans l'élément body. Donc ma foi, à mes yeux, aucun problème.

Cependant, je ne m'avancerai pas sur un gain de chargement ou l'arrivée de certains problèmes (pouvant être différents sous certains navigateurs). Peut être que certains membres auront des arguments à avancer.

En tout cas sujet très intéressant ...

Bonne continuation.
Romain
Salut,
c'est vrai que c'est une solution utilisée parfois pour charger du script seulement quand le contenu est là. Je n'y voit que deux inconvénients, un lié à mon éternel snobisme, pas de js entre les balises body Smiley smile l'autre, plus technique, il arrive souvent que certains effets js demandent à être efficace au chargement du dom, avant le chargement du contenu donc du window.onload. Par exemple quand un div est masqué par js pour ensuite être affiché ou balader ou autre avec js, si on attend la fin de page pour charger le js qui le masque... parce que oeuf corse, la solution consistant à le masquer par css le rend inaccessible. C'est par exemple le cas des contenus en accordéon, des sliders divers et de tout un tas de trucs inutiles donc indispensables Smiley smile

have swing
Salut virtualgadjo,
Si pour cela on est d'accord, moi je fais pareil, j'aime bien aussi quand c'est immédiat, mais il y a d'autre effet, comme un slideshow par exemple, ou l'inverse est préferable, c'est a dire que tout ce charge tranquilement avec la premiére image et seulement ensuite le script commence à agir et à faire tourner les autres images.
Salut matmat,
effectivement, c'est d'ailleurs tout l'intérêt de jongler entre domready et window.onload. Quand un truc doit être masquer par js dès l'ouverture le domready est à se place, en revanche, dans le cas typique que tu cites, le slider, perso, surtout s'il est un peu lourd, j'aurais tendance à mettre une image une image en dur, qui se chargera dans l'ordre logique du contenu et à ne déclencher le slider que sur le load de window, écrasant l'image de base ou chargeant celles qui manquent, comme ça, le chargement de la page ne pâtit pas de l'attente des autres images.

mais c'est vrai que dans ce cas, le code en bas de page ou sous l'élément concerné marche de la même façon, c'est juste une histoire d'habitude d'écriture.

Have swing
Bonjour,

Douglas Crockford (architecte js) à plusieurs fois recommandé de mettre les script à la fin de la page, cela accèlere leurs chargement et évite le problème d'attente du loading
Bonjour Matmat,
Je ne pense pas que 20ko de script retardent l'affichage d'une page.
C'est à partir du XHTML1.1 qu'il faut mettre javascript dans le head, je croix.
Mettre un script à la fin de la page, c'est seulement plus facile à initialiser (rapidement) que d'employer la méthode de Dean Edwards.
[quote=virtualgadjo]Salut,
c'est vrai que c'est une solution utilisée parfois pour charger du script seulement quand le contenu est là. Je n'y voit que deux inconvénients, un lié à mon éternel snobisme, pas de js entre les balises body Smiley smile l'autre, plus technique, il arrive souvent que certains effets js demandent à être efficace au chargement du dom, avant le chargement du contenu donc du window.onload. Par exemple quand un div est masqué par js pour ensuite être affiché ou balader ou autre avec js, si on attend la fin de page pour charger le js qui le masque... parce que oeuf corse, la solution consistant à le masquer par css le rend inaccessible. C'est par exemple le cas des contenus en accordéon, des sliders divers et de tout un tas de trucs inutiles donc indispensables Smiley smile
Modifié par LoK (18 Jun 2007 - 14:22)
En fait, il me semble que vous n'avez pas compris exactement ma question, ce n'est mettre un appel a un javascript a la fin mais carrément l'appel a la source de ce javascript a la fin comme ça:
<body>
 
   <h1>Title</h1>
   <div id="menu"><div>
   <div id="page"><div>
   <div id="footer"><div>

   <script type="text/javascript" src="script.js" ></script>
 
   <script type="text/javascript">init();</script>

</body>


C'est un peu bizarre mais ça marche trés bien donc je me demandais si il y avait un inconvénient. C'est pas juste pour faire les choses à l'envert mais c'est que j'ai remarqué que la xhtml de la page se charge plus vite.