5

可能重复:
html中有哪些不同的文档类型,它们是什么意思?

由于对 web 开发的某些方面相当缺乏经验(我总是更关注后端而不是前端),谁能给我他们的想法,我是否应该担心网页开头的 DOCTYPE 声明?

是最常见的 HTML 4.01,我应该构建我的网络应用程序以符合这个标准吗?

4

4 回答 4

4

John Resig (jQuery)在这件事上有发言权。此外,DocType 有助于使 MSIE6使用正确的框模型,并且还减轻了验证站点的痛苦(这对开发来说是一件好事;将其视为调试)。

于 2008-11-05T20:39:23.700 回答
3

您绝对应该在页面中包含 DOCTYPE 作为第一条语句,因为它会将 Web 浏览器切换到标准模式。这意味着他们至少会尝试使用 W3C 和 IETF 标准来呈现您的页面,而不是遵循称为 quirks 模式的向后兼容模型。

根据我自己的观察,现在更多地使用XHTML 1.0 Transitional而不是 HTML 4.01。XHTML 1.0 Transitional 是一种折中方案,它为您提供了 XHTML 的一些好处,但又不会太繁琐。

于 2008-11-05T20:44:46.700 回答
2

DTD 用于验证和实体定义。它们粗略地指定了某种标记语言和版本的语法要求。

可以使用验证器对 DTD 进行验证。或者,它可能由用户代理在解析期间完成(就像某些验证HTML/XML 解析器的情况一样)。如果用户代理支持,DTD 中定义的实体可能可用。

DOCTYPE 声明是标记语言(至少在 HTML 和 XML 中)引用文档中的内联/外部 DTD 的方式。

现在,就浏览器的 HTML(text/html) 解析器而言,DOCTYPE 声明只是控制渲染模式(DOCTYPE 切换)。根据引用的 HTML 版本以及是否指定 DTD URI,模式将是标准、几乎标准或怪癖。不使用实际的 dtd。

例如,带有 DTD URI 的 XHTML 1.0 过渡文档类型可能只会将浏览器置于几乎标准模式,而带有 DTD URI 的 XHTML 1.0 严格文档类型应该将浏览器置于标准模式。此外,HTML5 的文档类型 <!DOCTYPE html> 会将所有浏览器置于标准模式,并将 IE8+ 置于超级标准模式(因此在呈现时它的行为更像现代浏览器)。但一般来说,doctype 对 Javascript 和 DOM 支持影响不大(但也有例外,尤其是 IE8)。

对于浏览器,由于您几乎总是想要完全标准模式,因此您真正需要的是 <!DOCTYPE html>。更多的东西不会帮助浏览器。但是,该文档类型适用于 HTML5。如果您想符合 HTML 4.01 DTD 或 XHTML 1.0 DTD,则必须使用 HTML 4.01 strict 或 XHTML 1.0 strict 和正确的 DTD URI 来获得完全标准模式。

如果你想符合 HTML5,你可以在http://validator.nu/测试你的语法。它不针对 DTD 进行验证,并且比 DTD 验证更先进。它还比 DTD 更好地反映了 HTML 5,并且由于 HTML5 更好地反映了浏览器真正支持的内容,因此它的语法检查与浏览器世界更加兼容。

如果您想符合 HTML 4.01 或 XHTML 1.0 DTD,请使用 W3C 验证器。请注意,这些 DTD 并不反映浏览器支持的内容,而只是粗略地反映了它们所适用的规范。这些 DTD 更多地用于捕获粗略的语法错误以及充分利用它们的非浏览器用户代理。他们也不知道浏览器在 text/html 和 application/xhtml+xml 之间的行为有何不同。

要阅读有关浏览器Doctype 切换的信息:

http://www.mozilla.org/docs/web-developer/quirks/doctypes.html

http://www.opera.com/docs/specs/doctype/

http://hsivonen.iki.fi/doctype/

于 2008-11-05T23:20:23.063 回答
0

抛开所有好的做法不谈,人们使用诸如 XHTML 1.0 Transitional 之类的 DOCTYPE 的最大原因是将 IE 中的 CSS 框模型切换为与其他浏览器相同。这避免了对 CSS 布局的很多挫败感。这里有更详细的解释: http: //css.maxdesign.com.au/listamatic/about-boxmodel.htm

于 2008-11-05T22:02:26.183 回答