¿La declaración DOCTYPE tiene que ser la primera etiqueta en un documento HTML?[duplicar]

StackOverflow https://stackoverflow.com/questions/69828

  •  09-06-2019
  •  | 
  •  

Pregunta

Esta pregunta ya tiene respuesta aquí:

Nuestro administrador de seguridad inserta dinámicamente un poco de javascript en la parte superior de cada página html cuando el cliente solicita una página.Se inserta encima de la declaración DOCTYPE.Creo que esta podría ser la causa de los problemas de diseño que tengo.

¿Alguien tiene ideas?

¿Fue útil?

Solución

Sí, DOCTYPE deben ser los primeros datos de la página: http://www.w3schools.com/tags/tag_DOCTYPE.asp

Otros consejos

Sí, el DOCTYPE debe ser lo primero.

La definición está aquí: http://www.w3.org/TR/REC-html40/struct/global.html.Tenga en cuenta que dice que un documento consta de tres partes y la DTD debe ser la primera.

La recomendación para HTML lo expresa como una aplicación de SGML, que requiere que el DOCTYPE La declaración aparece antes del elemento HTML (ignorando los comentarios HTML).Incluso sin el DOCTYPE, agregando un SCRIPT elemento fuera del HTML El elemento (ya sea antes o después) no es HTML válido.Por supuesto, la validez de HTML puede no ser un requisito para usted, siempre y cuando funcione en la mayoría de los navegadores, y luego el cambio de modo peculiar mencionado le permitirá obtener:sin el DOCTYPE, muchos navegadores cambiarán al modo peculiar, posiblemente cambiando el diseño.

Supongo que algún proxy u otro está agregando el fragmento del script TAM que no puede analizar adecuadamente la estructura HTML de la página e insertar el SCRIPT en la posición correcta en el HEAD o BODY del documento.En este caso, agregar al final del documento, aunque no sea HTML válido, funcionará en la mayoría de los navegadores web.

¡Sin embargo, podría ser la fuente de tu problema!Consulte el "modo peculiaridades", ya que depende de la configuración del tipo de documento.Estudio adicional : http://www.quirksmode.org/explicación:puede alternar su navegador entre el modo compilador de estándares estrictos (principalmente IE) y el modo suelto.Esto afectará en gran medida el renderizado.La configuración de TAM podría haber activado/desactivado esto.

Leí las especificaciones de w3 que simplemente dicen que un documento tiene 3 partes.La secuencia se supone y no hay ninguna declaración explícita que prohíba, por ejemplo, un pequeño fragmento de js al principio.

Entiendo que es posible configurar TAM para agregar el js al final del documento, ¡pero no entiendo por qué lo ponen arriba si puede causar problemas tan obvios!

W3c (en w3.org), en una página llamada html5/sintaxis.html, dice "un TIPO DE DOCUMENTO es un preámbulo requerido" que interpreto en el sentido de que es requerido y que debe ser lo primero.

También dice que debe constar de los siguientes componentes en este orden:

  1. Una cadena que es una coincidencia ASCII que no distingue entre mayúsculas y minúsculas para la cadena <!DOCTYPE.
  2. Uno o más caracteres de espacio.
  3. Una cadena que es una coincidencia ASCII que no distingue entre mayúsculas y minúsculas para la cadena html.
  4. Opcionalmente, una cadena DOCTYPE heredada o una cadena DOCTYPE permitida obsoleta (definida a continuación).
  5. Cero o más caracteres de espacio.
  6. A > (U+003E) carácter.

Sí, el tipo de documento debe ser lo primero en el documento (excepto los comentarios).Debes evitar insertar scripts antes del tipo de documento;Los analizadores compatibles no están obligados a aceptar eso.(Deben aceptar guiones adjuntos después el resto del documento, si esa es una alternativa).

De la especificación HTML 5:

8.1 Escribir documentos HTML

Esta sección solo se aplica a documentos, herramientas de creación y generadores de marcado.En particular, no se aplica a los verificadores de conformidad;> los verificadores de conformidad deben utilizar los requisitos indicados en la siguiente sección > ("análisis de documentos HTML").

Los documentos deben constar de las siguientes partes, en el orden indicado:

  1. Opcionalmente, un único carácter "BOM" (U+FEFF).
  2. Cualquier número de comentarios y caracteres de espacio.
  3. UN DOCTIPO.
  4. Cualquier número de comentarios y caracteres de espacio.
  5. El elemento raíz, en forma de elemento html.
  6. Cualquier número de comentarios y caracteres de espacio.
  7. Los distintos tipos de contenido mencionados anteriormente se describen en las siguientes secciones.

De la especificación HTML 4.01:

7 La estructura global de un documento HTML

Un documento HTML 4 se compone de tres partes:

  1. una línea que contiene información de la versión HTML,
  2. una sección de encabezado declarativo (delimitada por el elemento HEAD),
  3. un cuerpo, que contiene el contenido real del documento.El cuerpo puede implementarse mediante el elemento BODY o el elemento FRAMESET.

[...]

Los espacios en blanco (espacios, nuevas líneas, tabulaciones y comentarios) pueden aparecer antes o después de cada sección.

[...]

Un documento HTML válido declara qué versión de HTML se utiliza en el documento.La declaración de tipo de documento nombra la definición de tipo de documento (DTD) en uso para el documento (ver [ISO8879]).

No es una etiqueta, pero sí.Principalmente porque esa es la única manera de poner Internet Explorer (creo que antes de la versión 8) en modo estándar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top