¿Sigue siendo relevante usar la etiqueta de comentario HTML alrededor del código JavaScript?

Quiero decir

<html>
    <body>
        <script type="text/javascript">
            //<!--
            document.write("Hello World!");
            //-->
        </script>
    </body>
</html>
80
rajakvk 2 oct. 2009 a las 10:03

5 respuestas

La mejor respuesta

Comentarios HTML, es decir. <!-- -->, ya no son necesarios. Pretendían permitir que los navegadores que no entendieran la etiqueta <script> se degradaran con gracia. Estos navegadores, por ejemplo. Netscape 1.x ya no se encuentran en la naturaleza. Por lo tanto, ya no tiene sentido poner comentarios HTML en las etiquetas de su script.

Si desea que su HTML se valide como XHTML o XML, probablemente quiera usar una etiqueta CDATA comentada.


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

El motivo es que sus <, >, &, " y ' que forman parte de su código javascript no tendrán que codificarse como &lt;, &gt;, &amp;, &quot; y &apos; respectivamente.

105
Asaph 2 oct. 2009 a las 06:41

Incluso en los navegadores modernos, puede ser útil. En realidad, me encontré con este problema hoy, precisamente porque quería evitar tener JavaScript incrustado en mi html.

Tengo una página html que se publica en http://host/variable_app_name/pagename, donde variable_app_name puede tener muchos valores (ya sabes, variable). Si desea acceder a archivos estáticos, debe usar una URL como http://host/static/variable_app_name/filename, por lo que no puedo especificar la ubicación del archivo estático sin antes buscar la ubicación del navegador para encontrar el valor de variable_app_name.

Para vincular al archivo javascript principal, hago lo siguiente:

<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>

El código anterior explotará incluso en la última versión de Chrome, porque la etiqueta del script terminará en el medio de una cadena de JavaScript y el resto de la cadena se interpretará como html, así:

<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>

Hay muchas formas de solucionar esto, pero me gusta usar un comentario html.

Con comentario 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>

Romper la cadena de 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>

Cree y agregue la etiqueta de script en lugar de usar 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>

Me gusta usar el comentario html porque es un cambio conciso y no necesitará replicar o pensar en cada archivo vinculado.

0
Jools 19 oct. 2018 a las 13:15

No de la forma en que lo haces, no.

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

... la diferencia con la suya es que un navegador poco común y oscuro que puede no entender la etiqueta del script imprimirá la apertura // en la pantalla, lo que frustra el propósito de colocar la etiqueta de comentario allí en primer lugar.

Aquí tienes más información aquí si tienes curiosidad: http://www.javascripter.net/faq/comments.htm

Sin embargo, al final, incluso los navegadores súper oscuros que no admiten JavaScript de forma predeterminada (como HTMLLayout o Netsurf) saben que es mejor no representar el texto entre etiquetas de script, por lo que no, ya no es relevante de ninguna manera. Sin embargo, todos los navegadores que le puedan interesar entienden la sintaxis

5
andwhyisit 30 nov. 2016 a las 13:52

Es mejor evitar JavaScript en el cuerpo todos juntos. Hace que las cosas sean más fáciles de actualizar, evita la necesidad de comentarios y te obliga a planificar para usuarios no habilitados para JavaScript, así como para usuarios con JavaScript habilitado.

13
Peter Mortensen 14 feb. 2010 a las 12:12

En realidad no, a menos que esté apuntando a navegadores de 20 años.

23
Sasha Chedygov 20 ago. 2013 a las 19:31