改變DOCTYPE是否會打破任何JavaScript函數實際上取決於如何防守這些功能的設計:)
例如,當文檔中怪癖模式,document.body
(體)呈現成爲所謂的「根元件」;當以標準模式呈現時,該根元素通常是document.documentElement
(HTML)。這是一個相當實質的區別。如果確定瀏覽器屏幕大小的腳本始終查詢的clientWidth
/clientHeight
屬性,它顯然會在怪癖模式下報告不正確的結果(因爲IIRC,document.documentElement.clientWidth/clientHeight
將表示HTML元素的維度,而不是屏幕的維度)。
大多數JS庫通常明確指出是否支持quirksmode(我們 - Prototype.js - 例如,不支持quirks模式)。
說到HTML與XHTML,爲了使瀏覽器能夠將文檔呈現爲XHTML,您必須首先使用適當的「Content-type」標頭(即application/xhtml + xml)來提供它。如果您僅將doctype更改爲XHTML版本,但仍然將文檔作爲「text/html」提供,我知道大多數瀏覽器仍將解析(並呈現)爲HTML文檔。
請注意,迄今爲止,IE並不瞭解「真正的」XHTML內容,這就是爲什麼要將文檔作爲文本/ html(使用HTML4.01文檔類型)提供推薦的方式(除非IE不支持瀏覽器, 當然)。
至於在「真正的」 XHTML文檔DOM特點,我聽說像document.write
有些事情「不工作」,而訪問節點屬性應該總是通過getAttribute/setAttribute
進行(而不是通過簡單的屬性訪問器) 。 IIRC,還有一些與innerHTML
有關的問題。
在「真實的」XHTML文檔中缺乏有關DOM的信息可能是由於其在一般網絡的文檔/應用程序中不實用(即IE缺乏對它的支持)。
在某些文檔模式中,dom元素不會從Object.prototype繼承,並且因爲它們不能用自定義方法或屬性擴展...... – inf3rno 2013-07-01 05:16:12