且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《JavaScript设计与开发新思维》——第2章JavaScript 2.1 选择DOCTYPE

更新时间:2022-09-27 09:36:11

本节书摘来自异步社区《JavaScript设计与开发新思维》一书中的第2章,第2.1节,作者:【美】Larry Ullman著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第2章JavaScript

JavaScript总体上类似于面向对象编程,没有经验的程序员可以在没有完全理解的情况下使用它。这种特质既是该语言的优点也是不足。尽管本书最后将教授给你完整而正确的JavaScript,但是本章只提供现实中的JavaScript的概览,而不进行所有乏味的正规训练。诚然,这是一个非常规的开始方式,但是通过这一开始阶段,本书可以保证你有一些JavaScript的经验。接着,本章将提出下面几章所针对的目标。

话虽如此,本章还是介绍了一些基础知识,特别是Web开发和设计的总体知识,这一切从DOCTYPE对其他工作的影响开始。

2.1 选择DOCTYPE

在我第一次开始进行Web开发时,对HTML页面的文档类型声明DOCTYPE没有任何体会。那个时候使用的应该是HTML 3.2,我只知道页面必须从以下语句开始:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
DOCTYPE是页面所用HTML版本的声明,新版本的HTML支持新的功能(以HTML元素的形式)。例如,HTML 2.0连表格都不支持,而HTML 3.2对样式表的支持有限。在过去数年中,最常用的DOCTYPE是HTML 4.01和XHTML 1.0。XHTML本质上就是HTML,但是更遵循XML语法(下一小节将作更多介绍)。HTML 4.01和XHTML 1.0有3种风格:Strict(严格)、Transitional(过渡)和Frameset(框架)。严格的版本显然是三者之中最有限制性的,所允许的元素集合最小。过渡版本是由严格版本加上一些废弃的元素。框架版本是过渡版本加上框架的支持。

如果你和我一样,做出介于HTML和XHTML之间的决定,可以使用最为宽容的过渡选项:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

再进一步,你可能已经习惯了用W3C标记验证服务(http://validator. w3.org/)之类的网站“验证”你的HTML页面。如果是这样,你就可能已经知道,这些工具根据页面的DOCTYPE进行验证。例如,如果你在一个“严格”的文档中使用了废弃的元素或者框架,这些内容将被标出。在XHTML文档中如果没有坚持XML语法也会导致同样的结果(图2.1)。
《JavaScript设计与开发新思维》——第2章JavaScript 2.1 选择DOCTYPE

注意: DOCTYPE必须是网页中的第一项内容,前面连空格都不能有。

希望你已经了解了所有这些选项,但是如果你不了解或者只知道这里讲述的这一些,那也是可以理解的。真正的目标并不只是创建通过验证规程的(X)HTML页面,而是使这些页面在浏览器中的外观和功能都正确,这也就是DOCTYPE起作用的地方:Web浏览器将根据DOCTYPE选择操作模式。如果存在有效的DOCTYPE,浏览器将运行于“标准兼容”模式(通常称为“标准”模式),在这种模式中HTML、CSS和DOM都按照设计意图工作。如果文档没有DOCTYPE或者DOCTYPE不正确,浏览器将运行于“怪癖”(Quirks)模式,用与旧的浏览器相一致的方式处理HTML、CSS和DOM。例如,Internet Explorer 8切换到怪癖模式时,它显示页面的方式和Internet Explorer 5.5相同。(IE 5.5到现在已经使用了十多年,可以想象,使用10年前的老技术来显示漂亮的新网页会有什么结果。)
《JavaScript设计与开发新思维》——第2章JavaScript 2.1 选择DOCTYPE

这还不是最糟糕的,甚至有效的DOCTYPE在某些浏览器上,或者在有效DOCTYPE的文档中有无效的元素情况下,也会触发怪癖模式。因此,在试图使网页的外观和表现在所有浏览器中保持一致这一点上,DOCTYPE起着重要的作用。在本书中,和你的Web开发生涯中一样,必须作出使用哪一种DOCTYPE的决策。本书中的选择如下:

<!DOCTYPE html>
上述DOCTYPE声明有几个好处:

更容易输入,降低了输入错误的可能性。
字符数量较少,意味着(可能很细微)发送到用户浏览器和加载的文件较小。
所有主要浏览器都支持它。
自动地使浏览器进入标准模式。
如果你还没有遇见过这个DOCTYPE,那是因为它是用于HTML5的新类型。现在HTML5还不是公认的标准—它仍然在讨论中,那么如何安全地使用它呢?让我们来仔细地研究一下。