Les commentaires HTML à l'intérieur des balises de script sont-ils une bonne pratique? [fermé]

97

La pratique suivante est assez courante dans le JavaScript en ligne avec lequel je dois travailler:

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>

Je sais que le but est d'empêcher les navigateurs incompatibles avec JavaScript de restituer la source, mais est-ce toujours une bonne pratique aujourd'hui? La grande majorité des navigateurs utilisés aujourd'hui peuvent interpréter JavaScript; même les appareils mobiles modernes n'ont généralement pas de problèmes.

Quant au «pourquoi pas? question: j'ai récemment dû passer plusieurs heures à déboguer un problème où quelqu'un avait laissé le '//' devant un '->' à la fin d'une balise de script enfouie profondément dans certaines pages, ce qui provoquait un mystérieux JavaScript les erreurs.

Que faire? Est-ce toujours considéré comme une «meilleure pratique»?

AndreiM
la source

Réponses:

118

L'important est que de nos jours, le fait qu'un navigateur particulier prenne en charge JavaScript ou non n'est pas pertinent (clairement la grande majorité le fait) - cela n'a pas d'importance car presque tous comprennent les blocs de script, ce qui signifie qu'ils savent ignorer le JavaScript même s'ils ne le peuvent pas. l'interpréter.

Matt Kruse donne une explication un peu plus détaillée sur son site JavaScript Toolbox pour expliquer pourquoi spécifiquement ne pas utiliser de commentaires HTML dans des blocs de script.

Cité de cette page:


N'utilisez pas de commentaires HTML dans les blocs de script

Dans les temps anciens de javascript (1995), certains navigateurs comme Netscape 1.0 n'avaient aucun support ni aucune connaissance de la balise script. Ainsi, lorsque javascript a été publié pour la première fois, une technique était nécessaire pour masquer le code des anciens navigateurs afin qu'ils ne le montrent pas sous forme de texte dans la page. Le «hack» consistait à utiliser des commentaires HTML dans le bloc de script pour masquer le code.

L'utilisation de commentaires HTML dans un script est mauvaise

// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
   // code here
//-->
</script>

Aucun navigateur couramment utilisé aujourd'hui n'ignore la balise <script>, il n'est donc plus nécessaire de cacher la source javascript. En fait, cela peut être considéré comme nocif pour les raisons suivantes:

  • Dans les documents XHTML, la source sera en fait masquée de tous les navigateurs et rendue inutile
  • - n'est pas autorisé dans les commentaires HTML, donc toute opération de décrémentation dans le script n'est pas valide
Noldorin
la source
1
+1. Je savais qu'il y avait quelqu'un qui avait beaucoup d'informations sur ce sujet de mes jours comp.lang.javascript, je parcourais les archives des groupes de discussion lorsque votre réponse est apparue, citant Matt.
Grant Wagner
1
En XHTML, vous pouvez utiliser un CDATA au lieu du commentaire HTML: <script ...> // <! [CDATA [... //]]> </script>
Concrete Gannet
Je dois ajouter que ce `` piratage '' produit une erreur dans Internet Explorer 9 (un client s'est plaint d'une page qui ne fonctionnait pas correctement et c'était la cause)
lordscales91
24

J'ai arrêté de le faire. À un moment donné, il vous suffit de lâcher votre mosaïque NCSA.

le chaos
la source
7
En d'autres termes, il n'y a aucune raison pour laquelle le PO devrait cesser de le faire. Vous suggérez qu'il devrait arrêter de le faire parce que vous l'avez fait, ce qui n'est pas une raison suffisante pour être une réponse à l'OMI.
Lawrence Aiello
1
@LawrenceAiello: Qu'en est-il de l'expression «meilleures pratiques» qui vous fait penser à des «faits» et non à des «opinions»?
chaos
5
bien là réside la faute ultime dans tout ce post. Il aurait dû être fermé car c'est une question de discussion.
Lawrence Aiello
1
Peut-être que lorsque cela a été publié il y a six ans, cela constituait une réponse, mais selon les normes du site aujourd'hui, ce n'est pas le cas.
j08691
1
Cette réponse est en cours de discussion sur Meta SO
CubeJockey
10

Conformément à la recommandation du W3C, il était principalement utile de cacher les données de script aux USER AGENTS.

Cité de la page W3c :

Commenter des scripts en JavaScript Le moteur JavaScript permet à la chaîne "<!--"de se produire au début d'un élément SCRIPT et ignore les autres caractères jusqu'à la fin de la ligne. JavaScript interprète "//" comme commençant un commentaire s'étendant jusqu'à la fin de la ligne courante. Ceci est nécessaire pour masquer la chaîne "->" de l'analyseur JavaScript.

    <SCRIPT type="text/javascript">
<!--  to hide script contents from old browsers
  function square(i) {
    document.write("The call passed ", i ," to the function.","<BR>")
    return i * i
  }
  document.write("The function returned ",square(5),".")
// end hiding contents from old browsers  -->
</SCRIPT>
Webrsk
la source
2
Si HTML 4.x est utilisé. C'est une tout autre histoire avec XHTML.
Quentin
8

Non, il s’agit d’une solution de contournement utilisée lors de la première introduction de l’élément de script. Aucun navigateur ne parvient aujourd'hui à comprendre l'élément de script (même s'il le comprend comme "Script à ignorer car le script est désactivé ou non pris en charge").

En XHTML, ils sont activement nuisibles.

J'ai écrit quelque chose sur son histoire il y a quelque temps.

Quentin
la source
3

J'ai arrêté de l'utiliser il y a quelque temps. De plus, selon Douglas Crockford , vous pouvez supprimer l'attribut type de vos balises de script puisque le seul langage de script disponible dans la plupart des navigateurs est JavaScript.

Jake McGraw
la source
1
La plupart des navigateurs fonctionneront toujours, cela viole la spécification HTML, donc je ne le conseillerais pas.
Quentin
4
on ne sait jamais quand IE prendra le script VB comme type par défaut ..
Francis
1

Si vous tapez manuellement, je vous suggère de toujours utiliser des fichiers js externes, cela aiderait beaucoup.

Concernant votre préoccupation: la plupart des navigateurs sont aujourd'hui sûrs avec JavaScript. Cependant, parfois, les gens peuvent écrire des analyseurs simples pour récupérer directement un code HTML - et je dois dire que le devis sécurisé est vraiment utile pour ces clients. De plus, certains clients non-JS comme l'ancien Lynx en tireraient des avantages.

Francis
la source
1

Si vous n'incluez pas de texte littéral entre les balises de script, c'est-à-dire si vous chargez des scripts à partir de fichiers src, vous pouvez oublier les commentaires.

Kennebec
la source
0

J'ai arrêté de faire ça il y a longtemps. Vous n'en avez vraiment pas besoin de nos jours.

John Topley
la source
@Yvette Quelle est votre motivation pour publier ce commentaire six ans après la publication de ma réponse?
John Topley
@Yvette Pas de faute, j'étais simplement curieuse. Et bien sûr, vous avez raison; aujourd'hui, je l'aurais posté en commentaire.
John Topley
-1

Je ne le fais pas mais l'autre jour, je suis allé valider mon site protégé par mot de passe au w3c. J'ai donc dû utiliser leur méthode de saisie directe. Il s'est plaint de mon javascript, alors j'ai remis les commentaires dans tout allait bien.

JoshBerke
la source