Pregunta

Dado un gran proyecto heredado que utiliza ASP.NET, javascript, css, etc., me preguntaba si cambiaría el DOCTYPE de las páginas web, por ejemplo, de HTML 4.0 Transitional a XHTML 1.0 Transitional (o al revés) De cualquier manera, se podrían romper las funciones javascript de las páginas web.

Hay muchos artículos y discusiones acerca de cómo los diferentes DOCTYPES afectan la representación (css) de las páginas, pero parece que no puedo encontrar nada similar en el tema de romper un código.

Estoy buscando enlaces a artículos sobre cosas a tener en cuenta en general para detectar mejor los problemas potenciales en el código existente y evitar crear problemas al escribir un nuevo código.

¿Fue útil?

Solución

Si el cambio de DOCTYPE interrumpirá alguna función de javascript realmente depende de cómo se diseñen defensivamente esas funciones :)

Por ejemplo, cuando el documento se procesa en modo de peculiaridades , document.body (BODY) se convierte en un denominado elemento raíz " " ;; cuando se representa en modo estándar, ese elemento raíz suele ser un document.documentElement (HTML). Esta es una distinción bastante sustancial. Si un script que determina el tamaño de la pantalla del navegador siempre consulta las propiedades de clientWidth / clientHeight fuera de document.documentElement , obviamente informará resultados incorrectos en el modo de peculiaridades (dado que, IIRC, document.documentElement.clientWidth / clientHeight representaría las dimensiones del elemento HTML, en lugar de las de pantalla).

La mayoría de las bibliotecas JS suelen indicar explícitamente si se admite quirksmode (nosotros, Prototype.js, por ejemplo, no admitimos el modo de peculiaridades).

Hablando de HTML vs XHTML , para que el navegador muestre el documento como XHTML, primero debe servirlo con el " Tipo de contenido " encabezado (es decir, application / xhtml + xml). Si solo cambia doctype a XHTML uno, pero sigue sirviendo el documento como " text / html " ;, la mayoría de los navegadores que conozco todavía lo analizarán (y representarán) como documento HTML .

Tenga en cuenta que, hasta la fecha, IE no comprende " real " El contenido XHTML, que es la razón por la que se sirven los documentos como texto / html (con doctype HTML4.01) es una forma recomendada (a menos que IE no esté entre los navegadores compatibles, por supuesto).

En cuanto a las peculiaridades de DOM en " real " Documentos XHTML, he escuchado que algunas cosas como document.write " no funcionan " y que los atributos de los nodos de acceso siempre se deben realizar a través de getAttribute / setAttribute (en lugar de a través de los accesores de propiedades más simples). IIRC, también hay algunos problemas con innerHTML .

La falta de información sobre DOM en " real " Los documentos XHTML probablemente se deben a su falta de funcionalidad en los documentos / aplicaciones para la web en general (es decir, la falta de soporte de IE para ellos).

Otros consejos

Si está utilizando la DTD:

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

entonces su sitio está en modo peculiar en IE y modo casi estándar en navegadores modernos, y debido a que el dtd de transición xhtml 1.0 obliga a la página a estar en modo estándar, habrá problemas de diseño y problemas potenciales en Javascript (especialmente en IE) ya que hay algunas diferencias significativas entre la forma en que el DOM se representa en las peculiaridades frente a las normas.

Sin embargo, si la DTD HTML 4.01 contiene el identificador del sistema:

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

Ya debería estar en modo estándar. Puede verificarlo consultando "document.compatMode" en su sitio, dirá "CSS1Compat" si cumple con los estándares, de lo contrario, "BackCompat" si está en modo peculiar.

Supongo que vas a servir un tipo de contenido de texto / html con XHTML 1.0 Transitional.

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