¿Sigue siendo relevante utilizar etiquetas de comentarios HTML en el código JavaScript?
quiero decir
<html>
<body>
<script type="text/javascript">
//<!--
document.write("Hello World!");
//-->
</script>
</body>
</html>
javascript
browser
rajakvk
fuente
fuente
Respuestas:
Comentarios HTML, es decir.
<!-- -->
, ya no son necesarios. Su objetivo era permitir que los navegadores que no entendían la<script>
etiqueta se degradaran con elegancia. Estos navegadores, por ejemplo. Netscape 1.x ya no se encuentra en estado salvaje. Así que 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 desee utilizar una etiqueta CDATA comentada.
<script type="text/javascript"> //<![CDATA[ document.write("Hello World!"); //]]> </script>
La razón de esto es por lo que su
<
,>
,&
,"
y'
que forman parte de su código JavaScript no tendrá que ser codificado como<
,>
,&
,"
y'
respectivamente.fuente
</script>
que normalmente se divide en</scr
yipt>
.]]>]]<![CDATA[>
☺<script>
cosas correctamente), entonces no veo una ventaja significativa delCDATA
bloque sobre el comentario tradicional. La única diferencia es si<script>
oficialmente tiene contenido o no, y con respecto a los motores de búsqueda, es posible que deseemos que no tenga contenido ...Realmente no, a menos que esté apuntando a navegadores de 20 años.
fuente
Es mejor simplemente evitar JavaScript en el cuerpo por completo. Facilita la actualización, evita la necesidad de comentarios y le obliga a planificar para usuarios que no tienen JavaScript habilitado, así como para usuarios con JavaScript habilitado.
fuente
.js
archivos en lugar de en HTML dificulta la actualización porque los.js
archivos pueden almacenarse en caché.<script type="text/javascript" src="http://example.com/path/to/file.js?v1.0"></script>
No de la forma en que lo estás haciendo, no.
El <! - se trata de la misma manera que // en javascript, por lo que su código debería verse así:
<script type="text/javascript"> <!-- document.write("Hello World!"); //--> </script>
... la diferencia con el tuyo es que un navegador poco común que no entienda la etiqueta del script imprimirá la apertura // en la pantalla, lo que frustra el propósito de poner la etiqueta de comentario allí en primer lugar.
Aquí hay más información al respecto si tiene 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 Browser 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 interesen entienden la sintaxis <! -, por lo que no hay necesidad real de preocuparse locamente por eliminarlo de lo que ya tiene, porque es js válido, solo recuerde no agregarlo la próxima vez.
fuente
Incluso en los navegadores modernos, puede resultar útil. De hecho, me encontré con este problema hoy, precisamente porque quería evitar tener javascript incrustado en mi html.
Tengo una página html que se sirve en
http://host/variable_app_name/pagename
, dondevariable_app_name
puede tener muchos valores (ya sabes, variable). Si quiere acceder a archivos estáticos, tiene que usar una URL comohttp://host/static/variable_app_name/filename
, por lo que no puedo especificar la ubicación del archivo estático sin mirar primero la ubicación del navegador para encontrar el valor devariable_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 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 este problema, 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>
Rompiendo la cadena 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 secuencia de comandos 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 será necesario replicarlo o pensarlo en cada archivo vinculado.
fuente