鉴于一个利用 ASP.NET、javascript、css 等技术的大型遗留项目,我想知道是否以任何方式更改网页的 DOCTYPE,例如从 HTML 4.0 Transitional 到 XHTML 1.0 Transitional(或其他方式)可能会破坏网页的 javascript 功能。
有很多关于不同 DOCTYPES 如何影响页面(css)渲染的文章和讨论,但我似乎找不到任何关于破坏任何代码的类似内容。
我正在寻找有关一般注意事项的文章的链接,以便更好地发现现有代码中的潜在问题并避免在编写新代码时产生问题。
更改 DOCTYPE 是否会破坏任何 javascript 函数实际上取决于这些函数的设计防御性:)
例如,当文档呈现在怪癖模式, 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)。如果您只将 doctype 更改为 XHTML,但仍将文档作为“text/html”提供,我知道的大多数浏览器仍会将其解析(并呈现)为 HTML 文档.
请注意,迄今为止,IE 无法理解“真正的”XHTML 内容,这就是为什么将文档作为 text/html(使用 HTML4.01 doctype)提供是推荐的方法(当然,除非 IE 不在受支持的浏览器之列) 。
至于“真正的”XHTML 文档中的 DOM 特性,我听说有些事情像document.write
“不起作用”并且访问节点属性应始终通过getAttribute/setAttribute
(而不是通过更简单的属性访问器)。 IIRC,也存在一些问题innerHTML
.
“真正的”XHTML 文档中缺乏有关 DOM 的信息可能是由于它在一般 Web 文档/应用程序中不切实际(即 IE 缺乏对它的支持)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)