¿Son los comentarios HTML dentro de las etiquetas de script una buena práctica? [cerrado]

97

La siguiente práctica es bastante común en el JavaScript en línea con el que tengo que trabajar:

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

Sé que el objetivo es evitar que los navegadores que son incompatibles con JavaScript muestren la fuente, pero ¿sigue siendo una buena práctica hoy en día? La gran mayoría de los navegadores que se utilizan hoy en día pueden interpretar JavaScript; incluso los dispositivos móviles modernos no suelen tener problemas.

En cuanto al '¿por qué no?' pregunta: Recientemente tuve que pasar varias horas depurando un problema en el que alguien había dejado el '//' delante de un '->' al final de una etiqueta de script enterrada profundamente en algunas páginas, y esto estaba causando JavaScript misterioso errores.

¿Qué haces? ¿Esto todavía se considera una 'mejor práctica'?

AndreiM
fuente

Respuestas:

118

Lo importante es que hoy en día, si un navegador en particular admite JavaScript o no es irrelevante (claramente la gran mayoría lo hace), es irrelevante porque casi todos entienden los bloques de script, lo que significa que saben ignorar JavaScript incluso si no pueden. interpretarlo.

Matt Kruse da una explicación un poco más detallada en su sitio de JavaScript Toolbox sobre por qué específicamente no utilizar comentarios HTML en bloques de script.

Citado de esa página:


No utilice comentarios HTML en bloques de script

En los tiempos antiguos de javascript (1995), algunos navegadores como Netscape 1.0 no tenían ningún soporte o conocimiento de la etiqueta de script. Entonces, cuando se lanzó javascript por primera vez, se necesitaba una técnica para ocultar el código de los navegadores más antiguos para que no lo mostraran como texto en la página. El 'truco' fue usar comentarios HTML dentro del bloque de script para ocultar el código.

Usar comentarios HTML en el script es malo

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

Ningún navegador de uso común hoy en día ignora la etiqueta <script>, por lo que ya no es necesario ocultar la fuente de JavaScript. De hecho, puede considerarse perjudicial por las siguientes razones:

  • Dentro de los documentos XHTML, la fuente se ocultará de todos los navegadores y se volverá inútil
  • - no está permitido dentro de los comentarios HTML, por lo que cualquier operación de disminución en el script no es válida
Noldorin
fuente
1
+1. Sabía que había alguien que tenía mucha información sobre este tema de mis días de comp.lang.javascript, estaba examinando archivos de grupos de noticias cuando apareció su respuesta, citando a Matt.
Grant Wagner
1
En XHTML, puede usar un CDATA en lugar del comentario HTML: <script ...> // <! [CDATA [... //]]> </script>
Concrete Gannet
Debo agregar que este 'truco' produce un error en Internet Explorer 9 (un cliente se quejó de una página que no funcionaba correctamente y esta fue la causa)
lordscales91
24

Dejé de hacerlo. En algún momento, solo tendrá que soltar su NCSA Mosaic.

caos
fuente
7
En otras palabras, no se proporciona ninguna razón por la que el OP debería dejar de hacerlo. Estás sugiriendo que debería dejar de hacerlo porque tú lo hiciste, lo cual no es una buena razón para ser una respuesta en mi opinión.
Lawrence Aiello
1
@LawrenceAiello: ¿Qué pasa con la frase "mejores prácticas" que te hace pensar en "hechos" y no en "opiniones"?
caos
5
Bueno, ahí radica la falla final en todo este post. Debería haberse cerrado porque es una cuestión de debate.
Lawrence Aiello
1
Quizás cuando esto se publicó hace seis años, esto calificó como una respuesta, sin embargo, según los estándares del sitio hoy en día, no lo es.
j08691
1
Esta respuesta se está discutiendo en Meta SO
CubeJockey
10

Según la Recomendación del W3C , fue principalmente útil ocultar los datos del script a los AGENTES DE USUARIO.

Citado de la página W3c :

Comentarios de scripts en JavaScript El motor JavaScript permite que la cadena se "<!--"produzca al comienzo de un elemento SCRIPT e ignora más caracteres hasta el final de la línea. JavaScript interpreta "//" como el comienzo de un comentario que se extiende hasta el final de la línea actual. Esto es necesario para ocultar la cadena "->" del analizador de 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
fuente
2
Si se utiliza HTML 4.x Es una historia bastante diferente con XHTML.
Quentin
8

No, es una resaca de una solución alternativa utilizada cuando se introdujo por primera vez el elemento de script. Ningún navegador deja de comprender el elemento de secuencia de comandos en la actualidad (incluso si lo entiende como "Secuencia de comandos que debe ignorarse porque la secuencia de comandos está desactivada o no es compatible").

En XHTML, son activamente dañinos.

Escribí algo sobre su historia hace un tiempo.

Quentin
fuente
3

Dejé de usar esto hace un tiempo. Además, de acuerdo con Douglas Crockford , puede eliminar el atributo de tipo de las etiquetas de su script, ya que el único lenguaje de script disponible en la mayoría de los navegadores es JavaScript.

Jake McGraw
fuente
1
La mayoría de los navegadores seguirán funcionando, pero viola la especificación HTML, así que no lo recomendaría.
Quentin
4
nunca se sabe cuándo IE tomará el script VB como tipo predeterminado ..
Francis
1

Si está escribiendo manualmente, le sugiero que siempre use archivos js externos, eso ayudaría mucho.

En cuanto a su inquietud: la mayoría de los navegadores son seguros para JavaScript en la actualidad. Sin embargo, a veces las personas pueden escribir analizadores simples para obtener un HTML directamente, y debo decir que la cita segura es realmente útil para esos clientes. Además, algunos clientes que no son de JS, como el antiguo Lynx, se beneficiarían de esto.

Francis
fuente
1

Si no incluye texto literal entre las etiquetas de script, es decir, si carga scripts de archivos src, puede olvidarse de los comentarios.

Kennebec
fuente
0

Dejé de hacer eso hace mucho tiempo. Realmente no lo necesitas en esta época.

John Topley
fuente
@Yvette ¿Cuál es su motivación para publicar ese comentario seis años después de que publiqué mi respuesta?
John Topley
@Yvette Sin ofender, simplemente tenía curiosidad. Y por supuesto que tienes razón; hoy en día lo habría publicado como comentario.
John Topley
-1

No lo hago, pero el otro día fui a validar mi sitio protegido con contraseña en w3c. Entonces tuve que usar su método de entrada directa. Se quejó de mi javascript, así que volví a poner los comentarios en todo estaba bien.

JoshBerke
fuente