Páginas

terça-feira, 28 de outubro de 2008

DOCTYPE!

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