para - etiquetas html
¿Son posibles los comentarios HTML anidados? (9)
según el título; ¿es posible tener comentarios anidados en HTML válido? mira el siguiente ejemplo ...
<p>some text</p>
<!-- comment 1
<p>commented out html</p>
<!-- comment 2
// are nested html comment allowed?
end of comment 2 -->
<p>more commented out html</p>
end of comment 1 -->
<p>some more text</p>
Parece que no, ¿alguien sabe cómo puedo hacer que los comentarios anidados funcionen?
Algunos editores tienen comandos para comentar / descomentar que pueden manejar automáticamente los comentarios existentes en un bloque de texto. Visual Studio, por ejemplo, lo hace cuando presiona Ctrl + KC y Ctrl + KU.
Creo que no está permitido, pero hasta donde sé, funciona en la mayoría de los principales navegadores excepto en Firefox.
Cuando anida un comentario, reemplace "-" por "- -". Cuando anula el nido, invierta el procedimiento. No es el <!--
que está prohibido sino el --
.
Ejemplo:
<!-- some stuff
<!- - some inner stuff - ->
<!- - a sibling - ->
the footer -->
No se puede hacer. -->
siempre terminará un comentario HTML existente.
Prueba esto
<p>some text</p>
<comment> comment 1
<p>commented out html</p>
<!-- comment 2
// are nested html comment allowed?
end of comment 2 -->
<p>more commented out html</p>
end of comment 1 </comment>
<p>some more text</p>
Si realmente está atrapado con algún fragmento de HTML (preprocesado en alguna fuente no controlable) que contiene comentarios, y necesita asegurarse de que no se represente en su página, siempre puede envolverlo con una etiqueta de script
como se muestra a continuación. , lo único es que no puede comentar las etiquetas de script
esta manera.
<p>some text</p>
<!-- multiline "comment" below using script type="text/html" -->
<script type="text/html">
<p>commented out html</p>
<!-- comment 2
// are nested html comment allowed?
end of comment 2 -->
<p>more commented out html</p>
</script>
<p>some more text</p>
Si necesita comentar las etiquetas de script
, puede usar un área de textarea
como un contenedor, por supuesto, haciéndolo de esta manera, no puede comentar las etiquetas de textarea
.
<p>some text</p>
<!-- multiline "comment" below using textarea style="display:none;" -->
<textarea style="display:none;">
<script>
alert("which won''t show up..");
</script>
<p>commented out html</p>
<!-- comment 2
// are nested html comment allowed?
end of comment 2 -->
<p>more commented out html</p>
</textarea>
<p>some more text</p>
Use template
etiqueta de template
. La forma más rápida de bloquear todos los comentarios y otros html para que no aparezcan.
<template>
<!-- first paragraph-->
Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
<!-- second paragraph-->
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</template>
<!-- third paragraph-->
Ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.sunt in culpa qui officia deserunt mollit.
intenta usar esto
<!--
este es el comienzo del comentario
<%-- this is another comment --%>
<%-- this is another one --%>
-->
fin de los comentarios.
TL; DR : Desafortunadamente, no, no es posible (y nunca lo será).
Respuesta corta:
Un comentario HTML no es lo que muchos piensan que es. HTML es una forma de SGML, en la cual los comentarios están delimitados por pares de doble guiones ( - ... - ).
Por lo tanto, cualquier par de doble guiones dentro de un par de corchetes angulares con un signo de exclamación después del corchete de apertura ( <! - ⋯ - > ) es un comentario. La especificación lo dice mejor que yo: http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4
Esta es la razón por la que comentarios como este (que probablemente todos hayamos hecho alguna vez) son una mala idea:
<!-- ------------------ HEADER BEGINS HERE -------------------- -->
Verdad: soy demasiado perezoso para decirte cuántos comentarios están representados por la contaminación de etiquetas anterior, pero son al menos 10.
Tengo menos pereza: este llamado "comentario" en realidad consiste en 10 comentarios, tres palabras fuera de cualquier comentario (es decir, simplemente malo SGML), y el comienzo de un comentario que no termina. Es un verdadero desastre
<!--1----2----3----4----5-- HEADER BEGINS HERE --6----7----8----9----10-- -->
Por supuesto, no es tan simple, debido a las diferencias en la forma en que cada navegador elige interpretar la especificación.
Aquí hay un excelente artículo que lo explica:
http://weblog.200ok.com.au/2008/01/dashing-into-trouble-why-html-comments.html
Larga respuesta: por qué nos equivocamos
La mayoría de nosotros que crecimos con HTML (sin profundizar en el SGML que lo sustenta) hemos llegado a creer que la cadena <! - comienza un comentario, y la cadena -> termina un comentario.
En realidad, <! y > delimite una declaración SGML dentro de su documento HTML, como la declaración DOCTYPE que todos hemos visto en la parte superior de nuestras páginas. Dentro de una declaración SGML, los comentarios están delimitados por doble guiones. Por lo tanto, el comentario HTML
<!-- this is a comment -->
que la mayoría de nosotros creemos que se analiza de esta manera <! - este es un comentario -> en realidad se analiza de esta manera:
<! - este es un comentario - > . Es una declaración SGML que está vacía excepto por un comentario.
Como HTML es una forma de SGML, este "comentario dentro de una declaración" funciona como un comentario HTML.
Fuera de interés, aquí hay un fragmento de SGML puro que muestra los comentarios funcionando como estaban destinados en SGML: esta definición de lista de atributos contiene un comentario en cada línea:
<!ATTLIST LINK %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #IMPLIED -- char encoding of linked resource -- href %URI; #IMPLIED -- URI for linked resource -- hreflang %LanguageCode; #IMPLIED -- language code -- type %ContentType; #IMPLIED -- advisory content type -- rel %LinkTypes; #IMPLIED -- forward link types -- rev %LinkTypes; #IMPLIED -- reverse link types -- media %MediaDesc; #IMPLIED -- for rendering on these media -- >