A declaração DOCTYPE precisa ser a primeira tag em um documento HTML?[duplicado]

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Essa pergunta já tem resposta aqui:

Nosso gerenciador de segurança insere dinamicamente um pouco de javascript no topo de cada página HTML quando uma página é solicitada pelo cliente.É inserido acima da instrução DOCTYPE.Acho que essa pode ser a causa dos problemas de layout que estou tendo.

Alguém tem ideias?

Foi útil?

Solução

Sim, DOCTYPE deve ser o primeiro dado da página: http://www.w3schools.com/tags/tag_DOCTYPE.asp

Outras dicas

Sim, o DOCTYPE deve vir primeiro.

A definição está aqui: http://www.w3.org/TR/REC-html40/struct/global.html.Observe que diz que um documento consiste em três partes e o DTD deve ser o primeiro.

A recomendação para HTML o expressa como uma aplicação de SGML, que exige que o DOCTYPE declaração aparece antes do elemento HTML (ignorando comentários HTML).Mesmo sem o DOCTYPE, adicionando um SCRIPT elemento fora do HTML elemento (antes ou depois) não é HTML válido.É claro que a validade do HTML pode não ser um requisito para você, desde que funcione na maioria dos navegadores, e então a mudança de modo peculiar mencionada lhe dará:sem o DOCTYPE, muitos navegadores mudarão para o modo quirks, possivelmente alterando o layout.

Presumo que o fragmento do script TAM esteja sendo adicionado por algum proxy ou outro que não é capaz de analisar adequadamente a estrutura HTML da página e inserir o SCRIPT na posição correta no HEAD ou BODY do documento.Nesse caso, adicionar ao final do documento, embora não seja um HTML válido, funcionará na maioria dos navegadores da web.

Pode ser a origem do seu problema!Confira o "modo peculiaridades", pois isso depende das configurações do tipo de documento.Um estudo mais aprofundado : http://www.quirksmode.org/explicação:você pode alternar seu navegador para o modo de compilação de padrões estritos (principalmente IE) e para o modo solto.Isso afetará muito a renderização.A configuração do TAM poderia ter ligado/desligado isso.

Eu li as especificações do w3 que dizem apenas que um documento contém 3 partes.A sequência é assumida e não há nenhuma declaração explícita proibindo, por exemplo, um pequeno trecho de js antecipadamente.

Eu entendo que é possível configurar o TAM para adicionar o js no final do documento, mas me surpreende por que eles o colocaram no topo se isso pode causar problemas tão óbvios!

W3c (em w3.org), em uma página chamada html5/sintaxe.html, diz "um DOCTYPE é um preâmbulo obrigatório", o que interpreto como significando que é obrigatório e que deve vir primeiro.

Também diz que deve consistir nos seguintes componentes nesta ordem:

  1. Uma string que é uma correspondência ASCII que não diferencia maiúsculas de minúsculas para a string <!DOCTYPE.
  2. Um ou mais caracteres de espaço.
  3. Uma string que é uma correspondência ASCII que não diferencia maiúsculas de minúsculas para a string html.
  4. Opcionalmente, uma string DOCTYPE herdada ou uma string DOCTYPE permitida obsoleta (definida abaixo).
  5. Zero ou mais caracteres de espaço.
  6. A > (U+003E).

Sim, o doctype deve estar em primeiro lugar no documento (exceto para comentários).Você deve evitar inserir scripts antes do doctype;analisadores compatíveis não são obrigados a aceitar isso.(Eles devem aceitar scripts anexados depois o resto do documento, se for uma alternativa.)

Da especificação HTML 5:

8.1 Escrevendo documentos HTML

Esta seção se aplica apenas a documentos, ferramentas de autoria e geradores de marcação.Em particular, não se aplica aos verificadores de conformidade;> os verificadores de conformidade devem usar os requisitos fornecidos na próxima seção > ("análise de documentos HTML").

Os documentos devem ser compostos pelas seguintes partes, na ordem indicada:

  1. Opcionalmente, um único caractere "BOM" (U+FEFF).
  2. Qualquer número de comentários e caracteres de espaço.
  3. UM DOUTORADO.
  4. Qualquer número de comentários e caracteres de espaço.
  5. O elemento raiz, na forma de um elemento html.
  6. Qualquer número de comentários e caracteres de espaço.
  7. Os vários tipos de conteúdo mencionados acima são descritos nas próximas seções.

Da especificação HTML 4.01:

7 A estrutura global de um documento HTML

Um documento HTML 4 é composto de três partes:

  1. uma linha contendo informações da versão HTML,
  2. uma seção de cabeçalho declarativa (delimitada pelo elemento HEAD),
  3. um corpo, que contém o conteúdo real do documento.O corpo pode ser implementado pelo elemento BODY ou pelo elemento FRAMESET.

[...]

Espaços em branco (espaços, novas linhas, tabulações e comentários) podem aparecer antes ou depois de cada seção.

[...]

Um documento HTML válido declara qual versão do HTML é usada no documento.A declaração de tipo de documento nomeia a definição de tipo de documento (DTD) em uso para o documento (ver [ISO8879]).

Não é uma etiqueta, mas sim.Principalmente porque essa é a única maneira de colocar o Internet Explorer (pré-versão 8, eu acho) no modo padrão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top