我今天应该以什么样的DOCTYPE为目标?

时间:2010-07-14 20:06:41

标签: asp.net html asp.net-ajax doctype w3c-validation

我正在重构

中的.Net Web应用程序
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 

目前,这种方法只是针对明星而去寻找最新的doctype,因为它是最新的,我想做出更明智的选择并针对特定的一个并且有充分的理由。

现有类似的问题,但现在答案可能已经过时。

标准和怪癖模式之间的区别,优点和缺点是什么,我可能会遇到不同设置的doctypes有什么怪癖?

我被告知XHTML文档类型比集成AJAX更可取,因为UpadtePanel序列化它需要有一个XHTML do类型,这到底有多大?

对于浏览器兼容性,浏览器在DOCTYPE方面走向哪个方向,是否存在共同的威胁,或者它们是否存在差异?

5 个答案:

答案 0 :(得分:15)

HTML5 doctype,即

<!DOCTYPE html>

XHTML在很大程度上已经死亡,在大多数情况下从未正确实施。

答案 1 :(得分:4)

任何文档类型:

  • HTML 4.01或XHTML 1.0
  • 严格或过渡

作为html(不是html + xml)应该没问题。没有更好的doctype这样的东西,你只需选择一个满足你的需求然后坚持其规则。

  • 避免使用Frameset,但如果你愿意,可以使用title属性来描述每个帧对屏幕阅读器用户的作用(与iframe btw相同)。
  • Quirks模式(无Doctype)是PITA,不惜一切代价避免它。 8年前这没关系。
  • 没有XML序言,除非你提供html + xml(祝你好运!如果你喜欢复杂的东西,不需要它,那就是你的选择)
  • 如果您被迫使用在严格模式(例如target="_blank")中禁止的属性而不是使用过渡模式:这就是创建它的原因!并且请向您的用户表明该链接将在新页面中打开,无论是在链接文本中还是在其标题中。从可访问性的角度来看,这很重要。

HTML 5 是下一件大事,我们正在等待它,但只要它不能在每个浏览器中工作(我的意思是没有JS的IE),建议不要使用它“严肃的”公共场所。它甚至是草案吗?如果整个部分在几个月内被重写怎么办? 我的网络代理商将其用于其网站,但我们不会很快在客户端网站上使用它:它太早了。

Sidenote :我经常看到像“ HTML5和CSS3 中的现代网站”这样的短语,暗示 CSS3 是针对HTML 5制作的。 CSS3与HTML5无关,只要它在旧浏览器上优雅地降级,就已经可以使用了 您可以使用最新的CSS3动画设计带有CSS2.1或HTML4.01 Transitional的HTML5,这些动画仅适用于webkit nightlies,没问题。

答案 2 :(得分:3)

新的东西是HTML 5。

<!DOCTYPE html>是用来指定它的。而已。没有DTD名称或URL或其他。

如果你正在使用喜欢XML的东西,比如.net,那么你可能想要使用XHTML。但不要出于任何其他原因这样做; XHTML作为标准从未真正受欢迎,或者至少它几乎从未正确使用过。

答案 3 :(得分:1)

浏览器从未真正使用DOCTYPE来确定文档的标记语言(它们使用的是HTTP内容类型),因此您选择的DOCTYPE从未具有相关性 - 只要您使用有效的DOCTYPE一些描述。无论你选择哪一个都取决于你。

如果你正在编写HTML,<!DOCTYPE html>是最短的输入,并将所有浏览器置于标准模式(这就是你想要的)。

如果您正在编写XHTML,<!DOCTYPE html>也是完全合法的(XHTML实际上根本不需要DOCTYPE,因为它完全依赖于HTTP Content-type,但是将DOCTYPE放入可移植性没有任何害处。 / p>

不要使用<!doctype html> - 虽然这是技术上有效的HTML,但它是无效的XHTML,因此如果您尝试将页面解析为XML,则会中断。


稍微OT注意:这里的一些人评论说XHTML是一个“死”的标准 - 这是错误的。 XHTML已集成到即将推出的HTML5规范中。该规范名为“ HTML5:用于HTML和 XHTML 的词汇表和相关API

请参阅:

答案 4 :(得分:1)

无论您选择什么,请确保您的MIME类型与您的DOCTYPE兼容

浏览器将使用MIME类型(HTTP标头内容类型)来确定如何处理您的页面。例如:作为ContentType Text\HTML的XHTML 1.1 Strict的DOCTYPE被解析为HTML。

DOCTYPE很重要,但如果使用了错误的ContentType,则很大程度上无关紧要。