Ya sea cambiando DOCTYPE se romperá ninguna función javascript realmente depende de cómo la defensiva esas funciones están diseñados :)
Por ejemplo, cuando documento se presenta a modo de peculiaridades, document.body
(el cuerpo) se convierte en un llamado "root elemento"; cuando se procesa en modo estándar, ese elemento raíz suele ser 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 clientWidth
/clientHeight
de document.documentElement
, obviamente informará los resultados incorrectos en el modo peculiar (ya que, IIRC, document.documentElement.clientWidth/clientHeight
representaría las dimensiones del elemento HTML, en lugar de las de la pantalla).
La mayoría de las bibliotecas JS suelen indicar explícitamente si se admite el modo peculiar (nosotros, Prototype.js, por ejemplo, no admitimos el modo peculiar).
Hablando de HTML vs XHTML, con el fin de navegador muestre documento como XHTML, debe en primer lugar servir con adecuada "Content-type" de cabecera (es decir application/xhtml + xml). Si solo cambia doctype a XHTML one, pero aún sirve el documento como "text/html", la mayoría de los navegadores que conozco aún lo analizará (y lo renderizará) como documento HTML.
Tenga en cuenta que IE no entiende el contenido XHTML "real", por lo que es recomendable utilizar documentos como text/html (con HTML4.01 doctype) (a menos que IE no se encuentre entre los navegadores compatibles) , por supuesto).
En cuanto a las peculiaridades de DOM en documentos XHTML "reales", he oído que algunas cosas como document.write
"no funcionan" y que el acceso a los atributos de nodo siempre se deben realizar a través de getAttribute/setAttribute
(en lugar de a través de acceso de propiedad más simples) . IIRC, también hay algunos problemas con innerHTML
.
La falta de información sobre DOM en documentos XHTML "reales" probablemente se deba a su impracticabilidad en documentos/aplicaciones para web general (es decir, la falta de soporte de IE para esto).
En algunos de los modos de documento, los elementos dom no heredan de Object.prototype y, por lo tanto, no se pueden extender con métodos o propiedades personalizados ... – inf3rno