2017-05-19 5 views
0

En quoi est-ce important que nous collions la balise <script> dans la tête ou non, en supposant que nous utilisions déjà async ou defer?En quoi est-ce important que nous portions la balise `<script>` dans la tête ou non, en supposant que nous utilisions déjà `async` ou` defer`?

L'étiquette de script en question est destinée à l'analyse. Apparemment, mettre des tags de script ailleurs est off-spec, mais je m'en fous.

+0

Async est assez nouveau. L'ajout du js à la fin du corps était en temps de pré-synchronisation ... –

+0

@Jonasw afaik, async a encore des problèmes si vous chargez des bibliothèques avec des dépendances. – Beofett

+0

@Beofett yep. Mais cela n'a rien à voir avec la question * Devrions-nous mettre le code asyncly chargé dans le corps? * –

Répondre

0

Comme vous l'avez déjà souligné, les balises de script appartiennent à l'en-tête. La seule raison de ne pas le faire était que les scripts étaient chargés avant le traitement du fichier html, provoquant un long rendu d'attente. C'est pourquoi de nombreuses personnes ont ignoré les spécifications et ont intégré les scripts au bas de l'écran. Comme ce n'est pas vraiment un bon moyen, les gens qui écrivent les spécifications ont introduit async et différer. Donc, il n'y a pas de raison de mettre du code asynchrone dans le corps ...

Sidenote: async et defer ne sont pas encore supportés par tous les navigateurs. Donc peut encore utiliser l'ancienne (illégale;)) solution de contournement ...

+0

98% des navigateurs sont plutôt bons! http://caniuse.com/#feat=script-defer –