• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html/xhtml > 知名浏览器对DOCTYPE模式的选择机制

知名浏览器对DOCTYPE模式的选择机制

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-05

本文主要包含浏览器,DOCTYPE等相关知识,佚名 希望在学习及工作中可以帮助到您

文档范围

本文包括的模式转换(mode switching)适用于Firefox和其他基于Gecko的浏览器,Safari、Chrome和其他基于Webkit的浏览器,Opera、 Konqueror、Mac版Internet Explorer、Windows版Internet Explorer和内嵌IE的浏览器。避免提及浏览器引擎的名字,取而代之的是使用该引擎最知名浏览器的名字。

本文着重介绍模式的选择机制,而不是记录每个模式的确切行为。

模式

以下是各种不同的模式:

内容类型为text/html的模式

text/html内容的模式选择取决于doctype嗅探(doctype sniffing,本文后面有讨论)。在IE8中,模式也取决于其他因素。然而在IE8的默认情况下,那些不在微软提供黑名单上的非局域网(non- intranet)站点的模式取决于文档类型。

再怎么强调每个浏览器中模式精确行为的不同也是不过分的,即使本文中进行了统一的讨论。

怪癖模式(Quirks Mode)
怪癖模式中,为了避免“破坏”那些根据在20世纪90年代末流行的实践创作的页面,浏览器违反了现代的Web格式规范。不同的浏览器实现了不同的怪癖行为。Internet Explorer6、7和8中,怪癖模式有效地冻结在IE5.5 。其他浏览器中,怪癖模式是对准标准模式的少量偏移。
如果正在创作新网页,你应该符合相关的规范(特别是CSS2.1)且使用标准模式。
标准模式(Standards Mode)
标准模式中,浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度。
不同的浏览器遵循不同的阶段,所以标准模式也不是一个单一目标。
HTML5把这种模式叫“非怪癖模式(no quirks mode)”
准标准模式(Almost Standards Mode)
irefox、Safari、Chrome、Opera(从7.5开始)和IE8也有个叫“准标准模式”的模式,它按照传统的做法来实现表格单元格的垂直尺寸而不是严格的遵照CSS2规范。Mac IE5、Windows IE6和7、Opera7.5以前版本和Konqueror无需准标准模式,因为它们至少没有在各自的标准模式下严格遵循CSS2规范来实现表格单元格垂直尺寸。实际上,它们的标准模式更接近Mozilla的准标准模式而不是Mozilla的标准模式。
HTML5把这种模式叫着“受限怪癖模式(limited quirks mode)”。
IE7模式
IE8有个模式主要是冻结了IE7标准模式的副本。其他浏览器没有像这样的模式,且该模式也未被HTML5指定。

内容类型为application/xhtml+xml的模式(XML模式)

Firefox、Safari、Chrome和Opera中,application/xhtml+xml HTTP内容类型(不是meta元素也不是doctype!)会触发XML模式。在XML模式中,浏览器尝试给XML文档在规范上的正确处理达到在制定浏览器中的程度。

IE6、7和8不支持application/xhtml+xml,Mac IE5也如此。

基于WebKit的Nokia S60 浏览器中,application/xhtml+xml HTTP内容类型不能触发XML模式,因为在移动的围墙花园(mobile walled gardens)中关注点是对不规范内容的兼容性。(旧式的“移动浏览器”无法使用真正的XML解析器,因为不规范内容已被标记为XML。)

由于没有充分地测试Konqueror,我无法确切说出在这个浏览器中会发生什么。

非Web模式(Non-Web Modes)

某些引擎拥有的模式与Web内容无关。为了完整性,它们仅仅在这里被提到。Opera有个WML2.0模式。Leopard上的WebKit有个用于旧式Dashboard widgets的特定模式。

影响

以下是这些模式的主要影响:

布局

text/html的模式主要是影响CSS布局。例如,表格不继承样式是个怪癖。在某些浏览器的怪癖模式下,盒模型(box model)变成IE5.5的盒模型。本文档没有列举出所有的布局怪癖。

准标准模式(有这种模式的浏览器中)中,仅包含图片的表格单元格的高和标准模式中不同。

XML模式中,选择器有不同的区分大小写行为。此外,用于HTML body元素的特有规则不能应用在那些没有实现最新CSS2.1改变的较旧版本的浏览器。

解析

也有一些怪癖影响HTML和CSS的解析且会导致符合标准的网页被错误解析。怪癖布局决定了这些怪癖是否开启。无论如何,了解怪癖模式和标准模式在CSS布局和解析(非HTML解析)上的主要异同是非常重要的。

一些人错误地把标准模式称为“严格解析模式(strict parsing mode)”,其让人误解了浏览器强制执行HTML语法规则和用浏览器评估标记的正确性。情况并非如此。即使当标准模式布局生效时,浏览器依旧会做标签杂烩汤(tag soup,http://en.wikipedia.org/wiki/Tag_soup)修正工作。(在2000年Netscape6发布前,Mozilla的确有用于强制执行HTML语法规则的解析模式。这些模式和现有的Web内容不兼容而被遗弃。)

另一个常见的误解是关于XHTML解析的。通常认为用XHTML doctype得到不同的解析。其实并非如此,内容类型是text/html的XHTML文档所用解析器和HTML文档的是同一个。目前浏览器在意的是文档类型为text/html的XHTML仅是“撒面包丁的标签杂烩汤(tag soup with croutons)”(到处是额外的斜线)。

仅当使用XML文档类型的文档(例如:application/xhtml+xml或xmapplication/)会触发XML模式来解析,这时的解析器完全不同于HTML解析器。

脚本

虽然怪癖模式主要是关于CSS的,但也有一些是关于脚本的。例如,Firefox的怪癖模式中,HTML id 属性像在IE一样建立了全局脚本作用域的对象引用。IE8中关于脚本的影响比其他浏览器更值得关注。

XML模式中,某些DOM API的行为彻底不同,因为XML的DOM API行为被定义时不兼容HTML的行为。

doctype嗅探(也叫doctype转换)

现代浏览器使用doctype嗅探来决定text/html文档的引擎模式。这意味着模式的选择是基于HTML文档开始的文档类型声明(或缺少)。(这不适于使用XML文档类型的文档。)

文档类型声明(doctype)是SGML的语法伪造,SGML是个旧式的标记框架,HTML5之前的HTML就是依据其定义的。HTML4.01规范中,文档类型声明描述的是HTML的版本信息。尽管名字叫“文档类型声明”且HTML 4.01规范所描述的是关于“版本信息”,文档类型声明并不适用把SGML或XML文档分类为特定类型的文档,即使它看起来像是(因为名字)。(更多内容在附录中)

HTML4.01规范和ISO 8879(SGML)都没有说关于使用文档类型声明作为引擎模式转换的任何事情。doctype嗅探是基于观察,在doctype嗅探被设计时,绝大部分的怪癖文档既没有文档类型声明也没有引用旧的DTD。HTML5接受这个事实,且定义了text/html中doctype作为唯一的模式转换。

典型的预HTML5(pre-HTML5)文档类型声明包含(被空白分开)“<!DOCTYPE”字符串,根元素(“html”)的通用标识符, “PUBLIC”字符串,处于引号中的DTD公共标识符,同一DTD的可能系统标识符(URL)和字符 “>”。文档类型声明位于文档的根元素开始标签之前。

选择doctype

text/html

下面是创建新的text/html文档时如何选择doctype的简单指南:

标准模式,最前沿的验证
<!DOCTYPE html>
如果想验证诸如<video>、<canvas>和ARIA这样的新特性,那么这样做是对的。注意,HTML5的有效定义依旧在变化中,请确保在Firefox、Safari、Chrome、Opera9或Opera10中测试图像对齐。在Internet Explorer中测试图像对齐是不足够的,无论如何请确保在IE8中也进行了测试。
标准模式,更稳定的验证目标
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
这个doctype也会触发标准模式,且10岁大的HTML4.01有效定义是稳定的。请确保在Firefox、Safari、Chrome、 Opera9或Opera10中测试图像对齐。在Internet Explorer中测试图像对齐是不足够的,无论如何请确保在IE8中也进行了测试。
要使用标准模式,但仍要验证不推荐标记或在表格布局中使用切片图像且不想去修复它们。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
它会触发准标准模式(和老掉牙的Mozilla中的完全标准模式full Standards mode)。请注意,如果以后移植到HTML5上,基于利用表格实现的切片图像的布局可能会被破坏(且完整标准模式也如此)。
故意要使用怪癖模式
没有doctype。
请别这样做。故意为怪癖模式所做的设计将会困扰你,在将来你的同事或继任者甚至没有人关心Windows IE6(Netscape4.x和IE5已经没有人关心了)。为怪癖模式设计是个坏主意。相信我。
如果你想依旧支持Windows IE6,对它做一个特别的hack使用条件注释比使其他浏览器退步到怪癖模式好。

我不推荐任何的XHTML doctype,因为XHTML被用作text/html被认为是有害的。无论如何,如果你选择使用XHTML doctype,请注意XML声明会使IE6(但不是IE7!)触发怪癖模式。

application/xhtml+xml

对application/xhtml+xml的简单指南是绝不使用doctype。该方式下的网页不是“严格一致”的XHMTL1.0,但这并不重要。(请看后面的附录)

IE8 并发症

A List Apart 曾介绍 ,IE8除doctype外会使用基于meta元素的模式转换

您可能想查找下面的文章:

  • <td></td>标签的border 样式在浏览器中显示不出来的解决方法
  • IE浏览器HTML Hack标签总结
  • 关于分割线 hr 在各浏览器中的差异
  • 使用SWFObject完美解决HTML插入Flash的各浏览器兼容性方案
  • HTML网页的浏览器标题栏显示小图标的方法
  • 将html标签在浏览器居中显示的css样式
  • 在html中插入音频文件在浏览器中播放音频文件的兼容性问题
  • select的最佳预设打造全兼容各浏览器select
  • 让网站在浏览器网址前面显示小图标的方法
  • 关于hr标记在各浏览器中的问题说明

相关文章

  • 2017-08-05用INS和DEL标记文档改变用法详解
  • 2017-08-05html页!--[if IE]...![endif]--使用详细介绍
  • 2017-08-05HTML教程:收集的常用的HTML标签(4)
  • 2017-08-05如何使用图片按钮作为重置(reset)表单按钮
  • 2017-08-05HTML的TextArea中保存格式问题解决方法
  • 2017-08-05HTML自学之旅(一)基本元素与属性练习(自写代码)
  • 2017-08-05网页html 特殊符号 html特殊字符对照表
  • 2017-08-05iframe框架在IE浏览器下将白色背景设为透明色
  • 2017-08-05网页制作前先来看看这些所谓的规范
  • 2017-08-05编写灵活、稳定、高质量的HTML和css代码规范指南

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML是网页制作者必须要学习掌握的
    • meta标签详解(meta标签的作用)
    • 如何设置select只读不可编辑且select的值可传递
    • HTML meta的大作用
    • HTML基本概念详解
    • 设置contenteditable属性可编辑HTML标签的内容(可代替textarea)
    • XHTML教程:Transitional和Strict的区别
    • HTML教程:收集的常用的HTML标签(5)
    • HTML&CSS&JS兼容树(IE,Firefox,chrome)
    • 浅谈:nofollow标签的使用与分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有