67 votes

Est-ce que le javascript doit être dans les balises head?

Je crois que le javascript peut être placé n'importe où (presque), mais je le vois presque toujours entre les balises . J'utilise jquery et je voulais savoir s'il doit nécessairement être placé entre les balises head pour une raison particulière ou si cela causera un problème si je le déplace. Merci.

EDIT: Pourquoi est-il presque toujours entre les balises head ?

1 votes

Juste une note, si vous inspectez les pages avec des balises </code> dans FireBug, vous verrez qu'elles sont automatiquement déplacées vers la balise <code><head></code>.</x-turndown>

0 votes

La croyance qu'il doit être chargé avant l'élément sur lequel il agit.

0 votes

Il semble être une bonne pratique de garder toutes vos définitions de script au même endroit, généralement avant le chargement du reste du document. Cependant, c'est un commentaire totalement subjectif de ma part.

49voto

Nate Points 8984

Non, cela peut être n'importe où. En fait, il est parfois judicieux de le mettre en bas du document. Pour une explication pourquoi, voir http://developer.yahoo.com/performance/rules.html#js_bottom.

0 votes

Ce site web affirme qu'il existe un potentiel compromis/inconvénient à placer des scripts en bas du document. L'affirmation est que certains éléments de votre site web, comme des boutons par exemple, peuvent être non réactifs jusqu'à ce que votre javascript s'exécute.

0 votes

Cela devrait être la solution acceptée. C'est maintenant considéré comme une bonne pratique.

40voto

John Calsbeek Points 19381

JavaScript est exécuté partout où il est trouvé dans le document. Si vous placez du JavaScript en ligne dans le corps, il sera exécuté lorsque le navigateur y parviendra. Si vous utilisez $(document).ready(...) pour exécuter des choses, alors le positionnement ne devrait pas poser problème. Sinon, vous pourriez rencontrer des cas particuliers où cela compte. En général, cela n'a pas d'importance. Les scripts se retrouvent principalement dans la balise head par tradition.

5 votes

Je soutiendrais que l'emplacement des balises de script a de l'importance. Consultez le post de Nate ( stackoverflow.com/questions/1213281/… ) pour comprendre pourquoi il est préférable de placer les scripts en bas de la page.

3 votes

Mais pour appeler $(document).ready(...), jQuery doit d'abord être chargé. Donc, cela doit être chargé et compilé même si les fonctions personnalisées ne le sont pas.

16voto

Anton Gogolev Points 59794

Fondamentalement, les navigateurs arrêtent le rendu de la page jusqu'à ce que les fichiers .js soient entièrement téléchargés et traités. Comme ils rendent la page progressivement au fur et à mesure que le HTML arrive, plus les fichiers .js sont référencés tardivement, meilleure sera l'expérience utilisateur.

Donc, le truc est d'inclure uniquement les scripts absolument essentiels dans l'élément head, et de charger les autres vers la fin de la page.

1 votes

Pouvez-vous ajouter un lien de référence pour charger du javascript de manière asynchrone ?

9voto

Draemon Points 15448

Tout s'arrête lorsque le navigateur lit une balise de script jusqu'à ce qu'il l'ait traitée. Votre page se rendra donc plus rapidement si vous déplacez les balises de script vers le bas autant que possible - idéalement juste avant la balise de fin du corps. Évidemment, le temps de chargement total restera le même.

Vous devrez vous assurer de ne pas appeler des fonctions jQuery tant que jQuery n'est pas inclus bien sûr.

7voto

madcolor Points 4077

Non Juste dans les balises </code> .. pour la plupart.</p> <p>En dehors des balises <code><Script></code>, vous pouvez appeler des fonctionnalités comme ceci :</p> <pre><code><button onclick="someFunction(someValue)">Cliquez-moi</button> </code></pre> <p>Mais vous seriez en train d'appeler une fonction js native, une dans les balises <code><Script></code> ou une dans un fichier .js externe référencé comme ceci :</p> <pre><code><script type="text/javascript" src="external.js">

Et...

  • Les JavaScripts dans la section body seront exécutés PENDANT le chargement de la page.
  • Les JavaScripts dans la section head seront exécutés lorsqu'ils sont APPELÉS.

http://www.w3schools.com/js/js_whereto.asp

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X