Pergunta

Dado um projeto de legado grande utilizando ASP.NET, javascript, css, etc, tecnologias, eu queria saber se mudando o DOCTYPE das páginas da web, por exemplo, a partir de HTML 4.0 Transitional para XHTML 1.0 Transitório (ou o contrário) de qualquer forma poderia quebrar as funções JavaScript das páginas da web.

Há uma abundância de artigos e discussões sobre como diferentes DOCTYPES afetar o (css) renderização de páginas, mas eu não consigo encontrar nada semelhante sobre o assunto de quebrar qualquer código.

Eu estou procurando links para artigos sobre as coisas que atente para em tão geral como para melhor detectar potenciais problemas no código existente e evitar a criação de problemas no novo código.

Foi útil?

Solução

Se mudando DOCTYPE vai quebrar quaisquer funções javascript realmente depende de como defensivamente essas funções são projetados:)

Por exemplo, quando o documento é processado em modo de peculiaridades , document.body (corpo) torna-se um chamado "elemento raiz"; quando processado no modo padrão, esse elemento raiz é geralmente um document.documentElement (HTML). Esta é uma distinção bastante substancial. Se um script que determina navegador tamanho da tela sempre consultas clientWidth / clientHeight propriedades fora de document.documentElement, obviamente vai relatar resultados incorretos no modo quirks (uma vez que, IIRC, document.documentElement.clientWidth/clientHeight representaria dimensões do elemento HTML, em vez do que os de tela).

A maioria da JS bibliotecas normalmente explicitamente indicar se quirksmode é suportado (nós - Prototype.js - por exemplo, não suportam peculiaridades mode).

Falando de HTML vs XHTML , para que o navegador para renderizar documento como XHTML, você deve antes de tudo servir com cabeçalho apropriado "Content-type" (ou seja, application / xhtml + xml). Se você única mudança doctype para XHTML um, mas ainda servem documento como "text / html", a maioria dos navegadores que eu conheço ainda irá analisar (e rendem)-lo como documento HTML .

Note-se que até à data, o IE não compreender o conteúdo XHTML "real", e é por isso que serve documentos como text / html (com HTML4.01 doctype) é uma maneira recomendada para ir (a menos que o IE não está entre os navegadores suportados, é claro).

Quanto peculiaridades DOM em documentos XHTML "reais", Ouvi dizer que algumas coisas como document.write "não funcionam" e que o acesso a atributos de nó deve sempre ser realizada via getAttribute/setAttribute (em vez de através de assessores da propriedade mais simples). IIRC, também existem alguns problemas com innerHTML.

A falta de informações sobre DOM em documentos XHTML "real" é, provavelmente, devido à sua impraticabilidade em documentos / aplicações para web geral (ou seja, a falta de suporte para ele do IE).

Outras dicas

Se você estiver usando o DTD:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

, em seguida, o seu site está em modo de peculiaridades no IE e no modo de quase-padrões em navegadores modernos, e porque o XHTML 1.0 forças DTD de transição da página para estar no modo de padrões haverá problemas de layout e questões potenciais no Javascript (especialmente em IE), pois há algumas diferenças significativas entre a forma como o DOM é processado em peculiaridades vs padrões.

No entanto, se o HTML 4.01 DTD contém o identificador do sistema:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

Ele já deve estar no modo de padrões. Você pode verificar consultando 'document.compatMode' em seu site, ele vai dizer 'CSS1Compat' se ele está em padrões de outra forma 'BackCompat' se estiver no modo quirks.

Eu estou supondo que você vai estar servindo a um Content-Type de text / html com XHTML 1.0 Transitional.

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