plantilla - la declaración<! doctype html define
¿Pueden aparecer los comentarios antes de la declaración DOCTYPE? (5)
Es completamente válido para hacer
<!-- this, -->
<!DOCTYPE html>
Sin embargo, trae todas las versiones de IE en el modo peculiar (a menos que sea forzado al modo no-quirks, consulte la sección de Gotchas más abajo). Lo más simple es mover el comentario debajo de DOCTYPE.
<!DOCTYPE html>
<!-- this, -->
Pero otra forma es "actualizar" el comentario en un comentario condicional adecuado , como este:
<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>
Explicación: un comentario condicional no cuenta como un comentario, en el mundo de IE.
Sintaxis alternativa: para olvidar / recordar que los comentarios condicionales son una intrusión de Microsoft en el estándar HTML, uno podría, por ejemplo, hacer
<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>
Del mismo modo, para dirigirse a IE en particular, uno podría hacer
<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>
Gotchas
Un comentario dentro de un comentario condicional traerá IE al modo peculiar si IE lo ve (es decir: si uno usa una condición [si IE] , o un equivalente a [si IE] - como la condición [if! Anybrowser] que Mencioné arriba). Entonces, por ejemplo, esto traería IE en modo peculiar:
<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>
Como lo haría
<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>
y muchas otras variantes Considerando que, por ejemplo,
<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>
no causaría el modo peculiar, porque aquí el comentario condicional tiene un DOCTYPE antes que cualquier otro contenido, y por lo tanto IE considera que el primer contenido de la página es un DOCTYPE.
Finalmente, las versiones IE más recientes, IE8 e IE9 , pueden ser forzadas a modo estándar (y también a modo peculiar) mediante el uso de otra invención de Microsoft: la directiva compatible con x-ua . 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]-->
forzará IE8 e IE9 al modo no-peculiar , mientras que IE6 e IE7 se mantendrán en modo peculiar . Mientras que, en cambio, esto
<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>
forzaría IE8 e IE9 al modo estándar, a pesar de que el contenido del comentario condicional no comienza 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.
Me gustaría colocar un comentario ( <!-- this -->
style) en la parte superior de mi código HTML, precediendo a la declaración DOCTYPE. ¿Esto se ajusta a los estándares? ¿Es compatible con los principales navegadores? ¿Hay algún error al hacer esto?
Escribir el <!DOCTYPE>
primero es sin duda la mejor práctica.
Recuerdo problemas extraños hace mucho, mucho tiempo, cuando algún navegador (probablemente IE6) ignoraba un <!DOCTYPE>
porque antes había algo aparentemente inocente, creo que solo en el espacio en blanco, pero tal vez era un comentario. En cualquier caso, era un error horrible y horrible que tenía que rastrear, y ciertamente nunca hay una buena razón para tener comentarios o espacios en blanco antes del <!DOCTYPE>
.
Escribir <!DOCTYPE>
primero es, diría yo, algo que los desarrolladores web experimentados hacen para evitar errores horribles y elusivos.
Eso puede hacer que IE7 se renderice en modo peculiar como si un doctype no estuviera allí, de acuerdo con esta página .
Los comentarios anteriores al doctype están permitidos, pero hacen que todas las versiones de IE vuelvan al modo peculiar. En realidad, se usan para ese propósito algunas veces. La declaración XML ( <?xml version ...?>
) Tiene el mismo efecto, en IE6 y abajo .
Si bien es aceptable según el estándar, creo que definitivamente quieres evitarlo, ya que lanzará IE en modo peculiar.
(Consulte Activación de diferentes modos de representación )