Будет ли изменение DOCTYPE нарушать какие-либо функции JavaScript на самом деле, зависит от того, насколько защищенно разработаны эти функции:)
Например, когда документ отображается в режиме quirks , document.body
(BODY) становится так называемым «корневым элементом»; при отображении в стандартном режиме этим корневым элементом обычно является document.documentElement
(HTML). Это довольно существенное различие. Если скрипт, определяющий размер экрана браузера, всегда запрашивает clientWidth
/ clientHeight
свойств, отличных от document.documentElement
, он, очевидно, сообщит о неверных результатах в режиме причуд (поскольку IIRC, document.documentElement.clientWidth/clientHeight
будет представлять измерения элемента HTML, а не экранные).
Большинство библиотек JS обычно явно указывают, поддерживается ли режим quirks (например, мы - Prototype.js - не поддерживаем режим quirks).
Говоря о HTML против XHTML , чтобы браузер отображал документ как XHTML, вы должны прежде всего предоставить его с соответствующим заголовком «Content-type» (то есть application / xhtml + xml). Если вы измените только тип документа на XHTML, но по-прежнему будете использовать документ как «text / html», большинство известных мне браузеров все равно будут анализировать (и отображать) его как документ HTML .
Обратите внимание, что на сегодняшний день IE не понимает «настоящий» контент XHTML, поэтому использование документов в виде text / html (с HTML4.01 doctype) является рекомендуемым способом (если IE не входит в число поддерживаемых браузеров, конечно).
Что касается особенностей DOM в «настоящих» XHTML-документах, я слышал, что некоторые вещи, такие как document.write
«не работают» и что доступ к атрибутам узла всегда должен выполняться через getAttribute/setAttribute
(а не через более простой собственность собственности). IIRC, также есть некоторые проблемы с innerHTML
.
Отсутствие информации о DOM в «настоящих» XHTML-документах, вероятно, связано с ее непрактичностью в документах / приложениях для общего Интернета (т. Е. В IE ее не поддерживают).