À quel point est-ce mal de placer la balise script après la balise de fermeture du body () ?
....
....
À quel point est-ce mal de placer la balise script après la balise de fermeture du body () ?
....
....
Notez que des applications comme YSlow suggéreront en fait que vous incluiez votre javascript à la fin de la page. Cela peut ne pas accélérer le temps de chargement global mais cela peut charger d'abord le contenu pertinent. Néanmoins, le placer juste à l'intérieur de la balise est préférable.
@epalla: si vous placez le script juste à la fin de la balise body, il ne reste plus aucun autre contenu à charger d'ici là, donc il devrait y avoir peu de différence entre le placer à l'extérieur ou juste à l'intérieur. Vous avez ensuite l'avantage supplémentaire que votre page continue à être valide, c'était le point que j'essayais de faire dans ma réponse.
Oui, je suis d'accord avec vous car votre réponse est bonne. Je voulais simplement ajouter qu'il y a une raison de placer JS en bas de la page au lieu de dans l'en-tête comme nous l'avons fait depuis longtemps.
Seuls les commentaires et la balise de fin de l'élément html sont autorisés après la balise de fin du body.
Vous pouvez confirmer cela avec la spécification ou un validateur.
Les navigateurs peuvent effectuer une récupération d'erreur, et la spécification HTML décrit même comment récupérer dans cette situation, mais vous ne devriez jamais en dépendre.
Il convient également de noter que la raison habituelle de placer l'élément script à la fin est de garantir que les éléments auxquels le script pourrait essayer d'accéder via le DOM existent avant l'exécution du script.
Avec l'arrivée de l' defer
attribut, nous pouvons placer le script
dans la head et obtenir toujours cet avantage tout en permettant également au JS d'être téléchargé par le navigateur en parallèle avec l'HTML pour de meilleures performances.
Ceci est une meilleure réponse. Il y a trop de nouveaux navigateurs avec l'arrivée des mobiles pour risquer de le faire incorrectement quand tout ce que vous avez à faire est de couper et coller une seule balise de fermeture.
Comme l'a dit Andy, le document ne sera pas valide, mais néanmoins le script sera toujours interprété. Voir l'extrait de WebKit par exemple:
void HTMLParser::processCloseTag(Token* t)
{
// Support pour un HTML vraiment cassé.
// nous ne fermons jamais la balise body, car certaines pages web stupides la ferment avant
// la fin réelle du doc.
// comptons sur l'appel de end() pour fermer les choses.
if (t->tagName == htmlTag || t->tagName == bodyTag
|| t->tagName == commentAtom)
return;
...
Internet Explorer ne le permet plus (depuis la version 10, je crois) et ignorera de tels scripts.
Firefox et Chrome les tolèrent encore, mais il est possible qu'un jour ils abandonnent cette fonctionnalité jugée non standard.
Et pourtant, Google le fait dans leur exemple de comment faire la connexion G+, avec "dernière mise à jour le 10 avril 2014". Je l'ai trouvé dans la version pour Java sur le serveur (developers.google.com/+/quickstart/java) mais apparemment c'est le même HTML+js pour tous.
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.
1 votes
Y a-t-il un support pour cela dans les navigateurs modernes.
0 votes
Possible duplicate de Où dois-je mettre les balises dans le balisage HTML?</a></x-turndown>
0 votes
Ce n'est pas faux. Cela déclenchera une alarme sur les validateurs, mais cela fonctionnera sur la plupart des navigateurs. Ce n'est pas faux, mais ce n'est pas valide.