Javascript doit-être encore « caché » dans les balises de commentaire HTML?

StackOverflow https://stackoverflow.com/questions/4648974

  •  09-10-2019
  •  | 
  •  

Question

J'ai récemment hérité du code Web et a constaté que tous les scripts Java Script sont contenus dans les balises de commentaires HTML

Par exemple:

<script type="text/javascript" language="javascript"><!--
    function ValidateForm() { ... }//-->

Si je comprends bien, cette méthode a empêché plus, non pris en charge, les navigateurs d'interpréter votre Java Script. Toutefois, ce n'est pas quelque chose que je jamais appris à le faire, et je me demande si cela est maintenant considéré comme inutile, ou est-ce encore une pratique courante? Si oui, pourquoi?


Mise à jour : Merci à Kennebec pour vos conseils pour les laisser dans, que je l'ai fait pour l'instant, et grâce à Emmett aussi: Je ne manquerai pas de les laisser de tout futur code I écrire!

Était-ce utile?

La solution

http://javascript.crockford.com/script.html :

  

Ne pas utiliser le hack <!-- //--> avec   scripts. Il était destiné à éviter   scripts de se présenter sous forme de texte sur la   première génération Netscape 1   et mosaïque. Il n'a pas été nécessaire   pendant de nombreuses années. <!-- //--> est censé   signaler un commentaire HTML. commentaires   devrait être ignoré, non compilé et   réalisé. En outre, les commentaires HTML ne sont pas   d'inclure -, donc un script   décréments a une erreur HTML.

Autres conseils

Il est à cause de validateur XHTML. Le code HTML de commentaires autour de l'extérieur doit utiliser étiquette. Le validateur est censé regarder votre code html, pas vos js.

Je recommande fortement ce texte https://developer.mozilla.org/en/properly_using_css_and_javascript_in_xhtml_documents où tout est sur ce sujet.

Mon site est XHTML 1.1, qui est XML.

Mon JavaScript est enveloppé dans //<![CDATA[ et //]]>, s'il y a une entité XML (comme '&', '<' ou '>') dans le code.

Retrait de la <!-- pourrait causer un script à l'échec quand il y a un </script dans le cadre du texte du programme à l'intérieur du <!-- ... -->.

Par exemple,

<script><!--
function containsScriptEndTag(s) {
  return s.indexOf('</script>') >= 0;
}
//-->
</script>

va analyser différemment sans <!-- ... -->.

Alors allez-y et de les supprimer, mais vérifiez d'abord.

BTW, à l'intérieur des éléments de script, ils ne sont pas appelés « commentaires », on les appelle «s'échapper des durées de texte ». De http://www.w3.org/ TR / 2009 / WD-html5-20090423 / syntax.html # syntaxe échapper

  

Une fuite plage de texte est un laps de   texte qui commence par un texte échappant   durée qui est elle-même commence pas dans un   échapper plage de texte, et se termine à la   fin span prochain texte échapper. Là   ne peut pas être des références de caractère   à l'intérieur d'une plage de texte échapper -   des séquences de caractères qui serait   ressemblent à des références de caractères ne pas   ont une signification particulière.

     

Une fuite de début plage de texte est une partie   du texte qui se compose des quatre   séquence de caractères "      

Une extrémité de fuite plage de texte est une partie de   texte qui se compose des trois   séquence de caractères "->" (U + 002D   TRAIT D'UNION, U + 002D TRAIT D'UNION,   U + 003E SIGN PLUS GRAND) dont U + 003E   SIGN supérieur à (>).

     

Une fuite de début plage de texte peut partager   ses U + 002D caractères Tiret   avec son texte correspondant échapper   fin portée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top