用doctype激活浏览器模式(2)
作者:秦歌 来源:随网之舞 发布时间:2009-06-15 19:02:00
非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)和字符 “>”。文档类型声明位于文档的根元素开始标签之前。
猜你喜欢
- 1、设置web.config文件。以下为引用的内容:<system.web> ...... <globalization
- Hello, 大家好,又是我~ 大家有看过font set和一些要注意的基本问题以及通用字体族两篇文章后,应该对字体的基本有了一些了解。现
- 因为工作的原因,开发过一个拆分字符串的SQL函数,现在把它贴出来,与大家共勉学习。该函数如下: &
- 如何在页面中对不同的数据进行相同的处理?selectId.asp' 列出所有客户的客户名称<html><
- 代码如下:'其中注释中有 ###的需要用户设置 '其中注释中有 参数传递 ** 的 说明要通过参数 传递。'定义变量
- 编者注:当讲到了性能优化和案例方面的东西,就要想到如何从开发人员的角度进行了理解,认识SQL是如何执行,以及如何学习高级的SQL,这篇文章对
- 这几天转了几个内容包含日语的贴,结果发现搜索数据库时出现“内存溢出”错误。上网搜索寻求答案未果。最后才发现这就是传说中的“日文 26 个片假
- 做一个总结,把自己这些年的从业经历和观感罗列一下,某些话可能触及到个人神经,但它们没有恶意。设计师喜欢把世界想象得很美好,社会很和谐,但是这
- 如何选择速度最快的站点? <html><head><meta http-equiv=&qu
- 内容摘要:在本人上一篇教程《彻底弄懂CSS盒子模式五(定位强化练习) 》有讲到一个很酷的链接面板提示的实例制作,那时主要是用到di
- 内容摘要: ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。ASP开发环境提供了两种
- 视觉设计是什么,人们怎么认为它的,自己又是怎么对待和理解它,它的核心价值是什么。视觉设计,冒似很艺术,跟艺术相关的职业,给大多数人的印象是做
- 尽管可能是个比较老的话题了,但是我还是从来没有整理过。今天在《精通HTML》一书中看到,这里整理一下。在XHTML中,<html>
- 如何用拦截表单的方法上传图片? 看下列代码:<script language="
- 我们做WEB程序开发过程中,经常会为了表格Table中的cellSpacing,cellpadding等样式的设置发愁,经常没有办法可想了,
- 支付宝lab的意思是支付宝实验室,也就是概念产品聚集地,可以让用户快速试用这些新产品。本次支付宝lab logo设计历时一个星期,视觉设计组
- 一、 在数据库排序查询优化上的差异。在讲解这个内容之前,为了读者能够清楚我讲的内容,我要先谈一个概念。命中率,它是指从内存中取得数据而不从磁
- 表单外观的美化很多时候,我们仅仅为了实现数据采集这个功能来使用表单,常看到的表单都是“千人一面”、毫无
- 昨天我突发奇想,想用display:inline来实现三列的布局可是搞了半天就是不行。但是理论上是可以的呀(后来才发现是不理解的不深刻,我的
- 1. 什么是 CSV 文件CSV(逗号分隔值)文件是使用逗号分隔信息的文本文件。该文件的每一行都是一条数据记录,也就意味着它可以用于以表格的