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