浏览器在解析HTML文档时,需要知道文档采用的是哪种HTML版本,这个版本信息就包含在文档类型声明(DOCTYPE)中。不同的DOCTYPE可以让浏览器采用不同的渲染模式,使得页面呈现出不同的效果。下面我们来介绍一下知名浏览器对DOCTYPE的选择机制。
一、DOCTYPE的类型及其作用
HTML4.01规范中定义了三种DOCTYPE类型:
- HTML 4.01 Strict
```
```
这个DTD(文档类型定义)包括所有HTML 4.01元素和属性,但不包括在HTML中已经废弃的元素和属性。使用这个DTD的文档不允许使用任何表现层的标记和属性。
- HTML 4.01 Transitional
```
```
这个DTD包括所有HTML 4.01元素和属性,以及在HTML5中已经废弃的元素和属性。使用这个DTD的文档可以包含HTML4.01废弃的标记和属性。
- HTML 4.01 Frameset
```
```
这个DTD包含所有的HTML 4.01元素和属性,以及frameset元素。使用这个DTD的文档可以包含frameset元素。
另外,HTML5规范中引入了一种新的DOCTYPE:
<!DOCTYPE html>
这个DOCTYPE没有任何DTD,它表示使用HTML5的规范解析文档。
二、浏览器对DOCTYPE的选择机制
在解析HTML文档时,浏览器会在文档的头部查找DOCTYPE声明。如果不存在DOCTYPE声明,浏览器会按照怪异模式(Quirks mode)解析文档,这种模式不按照任何标准进行解析,但会使得浏览器兼容更老的网页。
如果存在DOCTYPE声明,浏览器会选择一个渲染模式进行解释,常见的有三种:
- 怪异模式(Quirks Mode)
如果DOCTYPE声明不存在,或者声明不规范,浏览器将会在怪异模式下进行解析。怪异模式不会遵循任何标准,而是采用一种向后兼容的解析方式。例如,网页中通常不需要输入!DOCTYPE声明,但这种情况下浏览器仍然会采用怪异模式进行解析。
```
Hello World!
```
- 标准模式(Strict Mode)
如果DOCTYPE声明符合规范,浏览器将会采用标准模式。标准模式严格遵循HTML规范,不允许使用废弃的元素和属性。
```
Hello World!
```
- 准标准模式(Almost Strict Mode)
如果DOCTYPE声明虽然符合规范,但不是HTML5的文档类型声明,浏览器将采用准标准模式。在准标准模式下,浏览器支持一些新特性,但仍不允许使用废弃的元素和属性。
```
Hello World!
```
三、示例说明
- 采用怪异模式解析的示例:
```
Hello World!
```
在这个例子中,因为没有DOCTYPE声明,浏览器将会按照怪异模式解析文档。
- 采用标准模式解析的示例:
```
Hello World!
```
在这个例子中,DOCTYPE声明符合标准,浏览器将会按照标准模式解析文档。
以上就是知名浏览器对DOCTYPE模式的选择机制的攻略,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:知名浏览器对DOCTYPE模式的选择机制 - Python技术站