Javascript doit-être encore « caché » dans les balises de commentaire HTML?
-
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!
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.