Estes dias alguns webcontrols (ASP.NET) que eu havia feito estavam com comportamentos estranhos após inserir no html o elemento DOCTYPE, que é requerido pelos controles do AjaxToolkit. Alguns elementos da página estavam incorretos.
Não tinha como opção retirar o DOCTYPE da página, pois eu necessitava utilizar um controle do AjaxControlToolkit. Diante disto, resolvi entender o que exatamente é este elemento.
O que é um DOCTYPE?
DOCTYPE (Document Type Declaration ou DTD) é utilizado pelo browser para interpretar a versão do html corrente.
Segundo o W3C, um DOCTYPE informa ao browser qual é a versão do (x)HTML que está sendo utilizada, para que o mesmo possa validar.
Caso você não utilize um DOCTYPE, ou usar um inválido, o browser vai renderizá-lo em Quirks Mode, onde o browser pensa que você escreveu seu HTML de forma antiquada e inválida. Mas se você escolher um DOCTYPE válido, ele ira funcionar em Standards Compliance Mode, validando o documento de acordo com o DOCTYPE informado.
Para que meus controles funcionassem corretamente, tive que alterá-los para que eles entrassem no padrão.
Ou seja, sempre utilize um DOCTYPE ;)
Tipos
Strict
O código seguirá exatamente os padrões.
Na declaração strict, os documentos XHTML não aceitam qualquer item de formatação dentro dos elementos e nem elementos deprecated segundo as recomendações do W3C.
Exemplo: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Transitional
Utilizado quando você está fazendo uma transição de uma forma antiga de marcação para uma forma mais moderna.
Esta declaração é indicada para documentos que ainda utilizam elementos deprecated, regras de apresentação embutidas em tags e também para documentos destinados a exibição em browser sem suporte para CSS.
Exemplo: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Frameset
Utilizado quando usa-se frames.
Nesta declaração é permitido a declaração transational e mais os elementos específicos para frames.
Exemplo: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Validador
http://validator.w3.org/
Lista de DOCTYPE
http://www.w3.org/QA/2002/04/valid-dtd-list.html
0 comentários:
Postar um comentário