¿Mi doctype HTML5 tiene que estar en la primera línea?


Siempre me he preguntado si el espacio en blanco antes de un DOCTYPE importa, pero parece que no puedo encontrar ninguna información definitiva en la web. La gente dice que no lo haga, pero no puedo ver qué efecto es probable que tenga, o incluso si la especificación dice que debe ser así. No puedo averiguar si activa el modo de compatibilidad en IE o algo molesto como eso.

La razón es, en mi asp.net) código, yo preferiría mucho escribir:

<%@ Page language="c#" Codepage="65001" AutoEventWireup="true" %>
<%@ OutputCache Location="None" VaryByParam="none" %>
<!doctype html>

Que:

<%@ Page language="c#" Codepage="65001" AutoEventWireup="true" %><%@ OutputCache Location="None" VaryByParam="none" %><!doctype html>

Porque el primero es más limpio. Pero el resultado de la parte superior es unas pocas líneas en blanco en su html renderizado.

No es un gran problema. Siempre me he preguntado si importa:)

Author: captainclam, 2012-06-07

5 answers

Si desea la respuesta oficial, vaya a los documentos oficiales del W3C y lea sobre la sintaxis allí.

Los comentarios y los espacios pueden ser lo primero.

Aquí está el enlace: http://www.w3.org/TR/html-markup/documents.html#conformant-documents.

 24
Author: Ray Toal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 02:33:28

Hay navegadores ocasionales que tienen problemas con los espacios en blanco antes del doctype the el ejemplo clásico fue IE6, que se decía que entraba en modo quirks al verlo. Resulta que esto solo es cierto para algunos tipos muy específicos de espacios en blanco (espacios no rompibles, por ejemplo). Dicho esto, la compatibilidad con IE6 no es alta en las listas de prioridad de la mayoría de las personas.

 8
Author: Soz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 02:42:17

Para maximizar las probabilidades de evitar el modo Peculiaridades, coloque la declaración doctype al principio del documento HTML. No encontrará ninguna declaración oficial sobre esto, ya que el modo Quirks se trata de violar los estándares y sobre el comportamiento real del navegador. Es parte de la idea misma del Modo Peculiaridades que está en gran parte indocumentado; se supone que los autores no deben confiar en él. Está destinado a hacer que las páginas heredadas se comporten de manera tolerable (como solían hacerlo), no algo que deberías usar para las nuevas pagina.

Los navegadores modernos generalmente permiten una línea vacía antes del doctype, o un comentario, o una declaración XML, sin ir al modo Quirks. Pero no pongas nada allí, a menos que tengas una razón convincente para hacerlo.

 4
Author: Jukka K. Korpela,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 05:01:35

Tenga en cuenta que la especificación HTML vinculada a Ray es incorrecta. Mientras que los espacios en blanco se permiten antes del DOCTYPE, la especificación dice que también los comentarios pueden venir antes del DOCTYPE. Pero eso no funciona en Internet Explorer 9 y mayores.

 4
Author: Jesper Kristensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-28 16:32:09

No, el Doctype no tiene que ser el primera línea del archivo pero tiene que venir antes de la etiqueta <html>. Ese es el único límite que tiene, por lo que su primer método para hacerlo está bien.

La declaración debe ser lo primero en su documento HTML, antes de la etiqueta.

Obtenido de: escuelas w3 (doctypes)

 1
Author: Rivasa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 02:37:55