Me gustaría colocar un comentario (<!-- this -->
estilo) en la parte superior de mi código HTML, antes de la declaración DOCTYPE. ¿Esto se ajusta a los estándares? ¿Es compatible con los principales navegadores? ¿Hay algún error al hacer esto?¿Pueden aparecer los comentarios antes de la declaración DOCTYPE?
Respuesta
Escribir el <!DOCTYPE>
primero es sin duda la mejor práctica.
Recuerdo problemas extraños hace mucho, mucho tiempo en un navegador (probablemente IE6) ignoró una <!DOCTYPE>
porque había algo aparentemente inocente antes de que - creo que sólo los espacios en blanco, pero tal vez era un comentario. En cualquier caso, era un error horrible y horrible de tener que rastrear, y ciertamente nunca hay una buena razón para tener comentarios o espacios en blanco antes del <!DOCTYPE>
.
Escribir el primer <!DOCTYPE>
es, diría, sólo algo experimentado desarrolladores web hacen para evitar horribles, insectos difíciles de alcanzar.
Si bien es aceptable según el estándar, creo que definitivamente quiere evitarlo, ya que lanzará IE en modo peculiar.
Cualquier cosa que no sea el espacio en blanco que precede al DOCTYPE arroja IE (6 y 7, al menos - no estoy seguro acerca de 8) en modo peculiar. –
que pueden causar Internet Explorer 7 para la presentación en el modo de caprichos como si un tipo de documento no estaba allí en absoluto, de acuerdo con this page.
Comentarios antes del tipo de documento están permitidos, pero causan todas las versiones de IE para volver al modo peculiaridades. En realidad, se usan para ese propósito algunas veces. La declaración XML (<?xml version ...?>
) tiene el mismo efecto, en IE6 y por debajo de.
Es plena validez hacer
<!-- this, -->
<!DOCTYPE html>
Sin embargo, que trae todos versiones de IE en peculiaridades-mode (a menos que sea obligados en el modo de no-peculiaridades - vea la sección Gotchas a continuación). Lo más simple es mover el comentario debajo de DOCTYPE.
<!DOCTYPE html>
<!-- this, -->
Sin embargo, otra manera de hacerlo es “actualización” el comentario en una adecuada condicional comentario , como este:
<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>
Explicación: un condicional comentario hace no cuenta como un comentario, en el mundo de IE.
sintaxis alternativa: Para olvidar/recuerde que los comentarios condicionales son una intrusión de Microsoft en el estándar HTML, se podría, por ejemplo, no
<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>
Del mismo modo, para apuntar IE, en particular, se podría hacer
<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>
Gotchas
Un comentario dentro un comentario condicional traerá IE en peculiaridades-mode si IE ve (es decir: si uno utiliza un [si IE] condición, o un equivalente a [si IE] - como el [if! anybrowser] condición que he mencionado anteriormente). Así, por ejemplo, esto traería IE en caprichos-mode:
<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>
como sería
<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>
y muchas otras variantes. Mientras que, por ejemplo,
<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>
haría no causa peculiaridades modo, porque aquí el comentario condicional tiene un DOCTYPE antes cualquier otro contenido, y por lo tanto IE considera que el primer contenido de la página es un DOCTYPE.
Por último, las versiones de IE más nuevo, IE8 e IE9, pueden ser obligados a las normas-mode (y a peculiaridades-mode también) por el uso de otro Microsoft invención - compatible x-ua-la directiva. Ver http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx En ese caso, entonces
<!-- this -->
<!DOCTYPE html>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
se fuerza IE8 e IE9 en sin efectos raros modo, mientras que IE6 y IE7 permanecerán en peculiaridades modo. Mientras que, por el contrario, este
<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>
haría fuerza IE8 e IE9 en modo estándar, a pesar que el contenido del comentario condicional hace no comienzo con un DOCTYPE. Y IE6 e IE7 también permanecerán en el modo no-quirks ya que el comentario condicional no se dirige a ellos.
Hace mucho tiempo decidí evitar el problema al colocar mi comentario principal después del DOCTYPE, pero gracias por la explicación detallada (y fascinante) del comportamiento de IE. –
A + :) Voy a tomar su palabra, esta es una respuesta increíblemente detallada, gracias, me gusta mucho. Claramente no te detuviste ante el rabbithole: –
- 1. ¿Está bien para poner comentarios antes de la declaración XML?
- 2. ¿Qué declaración DOCTYPE deberíamos usar?
- 3. Por qué los parámetros opcionales deben aparecer al final de la declaración
- 4. XmlDocument.Save() inserta corchetes vacíos en declaración DOCTYPE
- 5. SyntaxError: falta; antes de la declaración
- 6. Expresión regular para eliminar comentarios de la declaración SQL
- 7. Declaración DOCTYPE que se pierde al utilizar XSL
- 8. php DOMDocument añade <html> cabeceras con declaración DOCTYPE
- 9. Declaración antes de la impresión de la horquilla() dos veces
- 10. ¿Cómo se pueden ver los comentarios de la tabla del cliente de mysql?
- 11. ¿Comentarios HTML dentro de los comentarios?
- 12. La palabra clave contextual 'var' solo puede aparecer en un problema de declaración de variable local
- 13. Explicación de la sintaxis Doctype
- 14. HTML 5 Doctype e IE 6
- 15. ¿Cómo se puede producir una declaración DOCTYPE con DOM nivel 3 de la API de serialización?
- 16. ¿Pueden los enmascaradores .NET como Reflector acceder a los comentarios en el código fuente original?
- 17. miembros const estáticos Por qué no pueden aparecer en una expresión constante como 'interruptor'
- 18. ¿Pueden los métodos asíncronos tener un código costoso antes de la primera 'espera'?
- 19. uso real de Doctype
- 20. Aprobar automáticamente todos los comentarios en el complemento de comentarios
- 21. ¿Cómo recoger los comentarios de los clientes?
- 22. terminando los comentarios de haml
- 23. Eliminar los comentarios de inner_html
- 24. TODO: los comentarios no aparecen en la lista de tareas
- 25. ¿Los comentarios son 100% seguros en todos los entornos principales?
- 26. ¿Cuál es la funcionalidad de! DOCTYPE?
- 27. ¿Pueden los miembros de salida de Doxygen purificarse por orden de declaración?
- 28. ¿Por qué están prohibidos los comentarios anidados?
- 29. Establecer brindis Aparecer longitud
- 30. HTML 5 Doctype causando peculiaridad?
Gracias, voy a colocar mi comentario después de la etiqueta html en su lugar. –
Tiene que venir antes de todo, incluido si desea que funcione correctamente. – nertzy
Esto me mordió. Pasé 4 horas tratando de descubrir por qué IE7/8 renderizó TODO FUERA DEL LUGAR.Después de revisar cada etiqueta para ver los frenillos de cierre y demás cosas, creé un nuevo archivo y copié el código línea por línea (no los comentarios) y todo funcionó bien. Completamente desconcertado, pensé al azar "¿y si ...?" cuando noté la línea de comentarios justo antes de DOCTYPE en el archivo original. ¡Estaba mi culpable! – dariopy