改变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