149 votes

Dois-je écrire le script dans le corps ou la tête du code html?

J'ai vu les deux sens, tant sur le plan de travail juste les structures sont un peu différentes. Dans votre expérience, qui fonctionnent le mieux et pourquoi?

111voto

Mark Schultheiss Points 13110

Je répondrais à cela avec plusieurs options en fait, certains de qui, de fait, rendu dans le corps.

  • Lieu bibliothèque de script tels que la bibliothèque jQuery dans la section d'en-tête.
  • La Place normale de script dans la tête, si elle ne devient une performance/de chargement de page en question.
  • Placez le script associé à comprend, à l'intérieur et à la fin de l'inclure. Un exemple de cela est .ascx les contrôles de l'utilisateur dans asp.net pages - placer le script à la fin de ce balisage.
  • Lieu de script qui a des répercussions sur le rendu de la page à la fin du corps (avant que le corps de fermeture).
  • ne PAS placer le script dans le balisage tels que <input onclick="myfunction()"/> - mieux de le mettre dans des gestionnaires d'événements dans votre corps d'un script à la place.
  • Si vous ne pouvez pas décider, mettre dans la tête jusqu'à ce que vous avez une raison de ne pas comme la page des problèmes de blocage.

Note de bas de page: "Quand vous en avez besoin et non pas avant" s'applique au dernier élément de la page de blocage (de perception de la vitesse de chargement) - les utilisateurs de la perception EST thier de la réalité, si elle est perçue plus pour charger plus rapidement, il ne charge plus rapide (même si les choses pourraient encore être présentes dans le code).

EDIT: références:

Remarque: SI vous placez des blocs de script au sein de balisage, il peut nuire à la mise en page dans certains navigateurs, en prenant de l'espace (ie7 et opera 9.2 sont connus pour avoir ce problème) afin de les placer dans un div caché (utiliser une classe css comme: .hide { display: none; visibility: hidden; } sur la div)

Normes: Notez que les normes de permettre le placement des blocs de script de pratiquement n'importe où si c'est dans la question: http://www.w3.org/TR/1999/REC-html401-19991224/sgml/dtd.html et http://www.w3.org/TR/xhtml11/xhtml11_dtd.html

EDIT2: Notez que chaque fois que possible (toujours?) vous devez mettre le réel Javascript dans des fichiers externes et de la référence à celles - cela ne change pas la pertinence de la séquence de validité.

43voto

Ken Struys Points 1405

Le problème avec l'écriture de scripts à la tête d'une page de blocage. Le navigateur doit arrêter le traitement de la page jusqu'à ce que le script est en cours de téléchargement, interprétée et exécutée. La raison pour cela est assez clair, ces scripts peuvent insérer de plus en plus dans la page de modification du résultat du rendu, ils peuvent également supprimer des choses qui n'ont pas besoin d'être rendu, etc.

Certains de la plus moderne des navigateurs ne respectent pas cette règle par pas de blocage sur le téléchargement des scripts (ie8 était le premier), mais dans l'ensemble, le téléchargement n'est pas la majorité du temps passé blocage.

Découvrez Encore plus Rapide des Sites web, je viens de finir de le lire et il va par tous les moyens rapides pour obtenir des scripts sur une page, y Compris la mise scripts en bas de la page pour permettre le rendu complet (mieux UX).

12voto

Vinz Points 1500

W3Schools ont un bel article sur ce sujet.

Les Scripts en <head>

Les Scripts à exécuter quand ils sont appelé, ou lorsqu'un événement est déclenché, sont placés dans les fonctions.

Mettez vos fonctions à la tête la section, de cette façon, ils sont tous dans une place, et ils n'interfèrent pas avec le contenu de la page.

Les Scripts en <body>

Si vous ne voulez pas que votre script placé à l'intérieur d'une fonction, ou si votre script doit écrire le contenu de la page, il doit être placé dans la section de corps.

4voto

webarto Points 11803

La tête, ou avant la fermeture de la balise body. Lorsque DOM JS est exécuté, c'est exactement ce que jQuery document.prêt n'.

2voto

Fabian Fritz Points 156

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