web-dev-qa-db-fra.com

Vous utilisez la balise de commentaire HTML <! - -> toujours pertinente par rapport au code JavaScript?

Est-il toujours pertinent d'utiliser la balise de commentaire HTML autour du code JavaScript?

Je veux dire

<html>
    <body>
        <script type="text/javascript">
            //<!--
            document.write("Hello World!");
            //-->
        </script>
    </body>
</html>
73
rajakvk

Commentaires HTML, c.-à-d. <!-- -->, ne sont plus nécessaires. Ils étaient destinés à permettre aux navigateurs qui ne comprenaient pas la balise <script> de se dégrader gracieusement. Ces navigateurs, par exemple. Netscape 1.x ne sont plus dans la nature. Il est donc inutile de mettre des commentaires HTML dans vos balises de script.

Si vous souhaitez que votre code HTML soit validé en tant que XHTML ou XML, vous souhaiterez probablement utiliser une balise CDATA commentée.


<script type="text/javascript">
//<![CDATA[
document.write("Hello World!");
//]]>
</script>

La raison en est que vos <, >, &, " et ' qui font partie de votre code javascript ne doivent pas être codés respectivement en tant que &lt;, &gt;, &amp;, &quot; et &apos;.

102
Asaph

Pas vraiment, sauf si vous ciblez des navigateurs âgés de 20 ans.

22
Sasha Chedygov

Il est préférable d'éviter le JavaScript dans le corps. Cela facilite la mise à jour, évite les commentaires et vous oblige à planifier les utilisateurs non activés par JavaScript ainsi que les utilisateurs avec JavaScript activé.

11
scragar

Pas comme tu le fais, non.

Le <! - est traité de la même manière que // en javascript, votre code devrait donc ressembler à ceci:

<script type="text/javascript">
<!--
document.write("Hello World!");
//-->
</script>

..la différence avec le vôtre, c'est qu'un rare navigateur obscur qui ne comprend peut-être pas la balise script imprimera l'ouverture // à l'écran, ce qui irait à l'encontre du but de placer la balise comment en premier lieu.

Voici plus d'informations à ce sujet ici si vous êtes curieux: http://www.javascripter.net/faq/comments.htm

Cependant, à la fin, même les navigateurs super obscurs qui ne supportent pas le javascript par défaut (comme HTMLLayout browse ou Netsurf) savent qu'il est préférable de ne pas restituer le texte entre les balises de script; Cependant, tous les navigateurs qui pourraient vous intéresser comprennent la syntaxe <! -, il n’ya donc pas vraiment lieu de s’inquiéter de la supprimer de ce que vous avez déjà, car il est valide js, n’oubliez pas de ne pas l’ajouter la prochaine fois.

5
andwhyisit

Même dans les navigateurs modernes, cela peut être utile. En fait, j’ai rencontré ce problème aujourd’hui, précisément parce que je voulais éviter l’inclusion de javascript dans mon code HTML.

J'ai une page HTML qui est servie sur http://Host/variable_app_name/pagename, où variable_app_name peut avoir beaucoup de valeurs (vous savez, variable). S'il veut accéder à des fichiers statiques, il doit utiliser une URL telle que http://Host/static/variable_app_name/filename. Je ne peux donc pas spécifier l'emplacement du fichier statique sans d'abord regarder l'emplacement du navigateur pour trouver la valeur de variable_app_name.

Pour créer un lien vers le fichier javascript principal, procédez comme suit:

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
</script>

Le code ci-dessus explose même dans la dernière version de Chrome, car la balise de script se termine au milieu d'une chaîne javascript et le reste de la chaîne sera interprété comme du code HTML, comme suit:

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js">
</script>
\n');
</script>

Il existe de nombreuses façons de résoudre ce problème, mais j'aime bien utiliser un commentaire HTML.

Avec commentaire html:

<script type="text/javascript" >
<!--
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
-->
</script>

Casser la chaîne javascript:

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></scr'+'ipt>\n');
</script>

Créez et ajoutez la balise de script plutôt que d'utiliser document.write:

<script type="text/javascript" >
   var variable_app_name = window.location.pathname.split('/')[1];
   var script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = '/static/'+variable_app_name+'/pagename.js';
   document.head.appendChild(script);
</script>

J'aime utiliser le commentaire html parce que c'est un changement concis et qu'il n'a pas besoin d'être reproduit ni réfléchi pour chaque fichier lié.

0
Jools