lista - etiquetas html
¿HTML5 cambia el estándar para comentarios HTML? (2)
¡No creo que sea un buen hábito tomar desde
<!
significa declaraciones de marcado como
<!DOCTYPE
.
Por lo tanto, cree que está comentado (bueno ... el navegador intentará interpretarlo).
Incluso si no aparece, esta parece no ser la sintaxis correcta para comentar código HTML.
Recientemente descubrí que existe, posiblemente, una nueva forma de comentar en HTML5.
En lugar de los típicos comentarios de varias líneas
<!-- -->
sobre los que he leído,
pensé
que noté que mi IDE hacía un comentario habitual de
<!div >
.
Así que lo probé y, para mi sorpresa, Chrome había comentado esa etiqueta.
Solo
comentaba la etiqueta y no el contenido del div, así que tuve que comentar el cerrador
<!/div>
para evitar cerrar otros divs.
Probé otro y parece que, por lo general, al colocar un marcador de exclamación frente a la apertura de cualquier etiqueta, este símbolo
<
, se comenta esa etiqueta.
¿Es esto realmente nuevo? ¿Es una mala práctica? En realidad es muy conveniente, pero ¿es práctico todavía (si no es nuevo)?
Editar detalles adicionales: aunque un error de sintaxis o malas interpretaciones de esta sintaxis en particular es una buena razón, ¿por qué Chrome realmente los presenta como comentarios completos?
El código está escrito como :
<!div displayed> some text here that is still displayed <!/div>
Y luego se representa como :
<!--div displayed--> some text here that is still displayed <!--/div-->
No hay un nuevo estándar para comentarios en HTML5.
La única sintaxis de comentario válida sigue siendo
<!-- -->
.
De la
sección 8.1.6 de W3C HTML5
:
Los comentarios deben comenzar con la secuencia de cuatro caracteres U + 003C MENOS QUE SEÑAL, U + 0021 MARCA DE EXCLAMACIÓN, U + 002D HYPHEN-MINUS, U + 002D HYPHEN-MINUS (
<!--
).
El
<!
La sintaxis se origina en el marcado SGML DTD, que no forma parte de HTML5.
En HTML5, está reservado para comentarios, secciones CDATA y la declaración DOCTYPE.
Por lo tanto, si esta alternativa es una mala práctica depende de si considera que el uso de (o peor, la dependencia de) marcado obsoleto es una mala práctica.
Validator.nu llama a lo que tiene un "comentario falso".
- lo que significa que se trata como un comentario a pesar de que no es un comentario válido.
Presumiblemente, esto es por compatibilidad con versiones anteriores de HTML5, que estaba basado en SGML y tenía declaraciones de marcado que tomaron la forma
<!FOO>
, por lo que no llamaría a esto nuevo.
La razón por la que se tratan
como
comentarios es porque las declaraciones de marcado SGML fueron declaraciones especiales que no están destinadas a representarse, pero dado que no tienen sentido en HTML5 (con las excepciones anteriores), en lo que respecta al DOM de HTML5, no
son
más que comentarios .
Los siguientes pasos dentro de la sección 8.2.4 conducen a esta conclusión, que Chrome parece estar siguiendo al pie de la letra:
-
Consume el siguiente carácter de entrada:
"<" (U + 003C)
Cambie al estado de etiqueta abierta. -
8.2.4.8 Estado de etiqueta abierta :
Consume el siguiente carácter de entrada:
"!" (U + 0021)
Cambie al estado abierto de declaración de marcado. -
8.2.4.45 Estado abierto de declaración de marcado :
Si los siguientes dos caracteres son ambos caracteres "-" (U + 002D), consuma esos dos caracteres, cree un token de comentario cuyos datos sean la cadena vacía y cambie al estado de inicio de comentario.
De lo contrario, si los siguientes siete caracteres coinciden entre mayúsculas y minúsculas ASCII para la palabra "DOCTYPE", consuma esos caracteres y cambie al estado DOCTYPE.
De lo contrario, si hay un nodo actual ajustado y no es un elemento en el espacio de nombres HTML y los siguientes siete caracteres son una coincidencia entre mayúsculas y minúsculas para la cadena "[CDATA [" (las cinco letras mayúsculas "CDATA" con un U + 005B IZQUIERDO CUADRADO (antes y después), luego consuma esos caracteres y cambie al estado de sección CDATA.
De lo contrario, este es un error de análisis. Cambie al estado de comentario falso. El siguiente personaje que se consume, si lo hay, es el primer personaje que estará en el comentario.
Tenga en cuenta que dice cambiar al estado de inicio del comentario solo si la secuencia de caracteres encontrados es
<!--
, de lo contrario, es un comentario falso. Esto refleja lo que se indica en la sección 8.1.6 anterior. -
8.2.4.44 Estado de comentario falso :
Consuma todos los caracteres hasta el primer carácter ">" (U + 003E) o el final del archivo (EOF), lo que ocurra primero. Emitir un token de comentario cuyos datos son la concatenación de todos los caracteres a partir del carácter que causó que la máquina de estado cambie al estado de comentario falso, incluido el carácter inmediatamente anterior al último carácter consumido (es decir, hasta el carácter justo antes del carácter U + 003E o EOF), pero con los caracteres U + 0000 NULL reemplazados por caracteres U + FFFD REPLACEMENT CHARACTER. (Si el comentario se inició al final del archivo (EOF), el token está vacío. Del mismo modo, el token está vacío si fue generado por la cadena "
<!>
".)En inglés simple, esto convierte
<!div displayed>
en<!--div displayed-->
y<!/div>
en<!--/div-->
, exactamente como se describe en la pregunta.
En una nota final, probablemente pueda esperar que otros analizadores compatibles con HTML5 se comporten igual que Chrome.