浏览器标准模式(standars mode)与怪异模式(Quirks mode)浅析
2016-06-01 10:56
453 查看
标准模式与怪异模式产生原因
在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode)。
W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。
火狐的始终表现的很一致,不种我们操心。重点是IE(6,7,8)标准模式与怪异模式差别很大,主要体现在对盒子模型的解释上。
渲染模式
浏览器会通过识别DTD(document type definition 文档类型定义)而采用相对应的渲染模式
浏览器对没有doctype声明的网页采用quirks mode解析
对于拥有doctype声明的网页,但浏览器不能识别的doctype声明,浏览器采用strict mode解析
没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析
在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的
在ie6中,如果在doctype声明前有一个xml声明,则采用quirks mode解析。这条规则在ie7中已经移除了
判断浏览器模式
在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode)。
W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。
火狐的始终表现的很一致,不种我们操心。重点是IE(6,7,8)标准模式与怪异模式差别很大,主要体现在对盒子模型的解释上。
渲染模式
浏览器会通过识别DTD(document type definition 文档类型定义)而采用相对应的渲染模式
浏览器对没有doctype声明的网页采用quirks mode解析
对于拥有doctype声明的网页,但浏览器不能识别的doctype声明,浏览器采用strict mode解析
没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析
在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的
在ie6中,如果在doctype声明前有一个xml声明,则采用quirks mode解析。这条规则在ie7中已经移除了
微软的 Internet Explorer 6 浏览器,如果 DOCTYPE 之前有一个 XML 声明,不管是否指定完整的DOCTYPE,它就会以 quirks 模式渲染一个页面。因此以如下代码开始的 XHTML 页面会被 IE 6 渲染为 quirks 模式: <?xml version="1.0"encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 在一定程度上,上述代码是有用的,然而它仅仅会对 IE 6 触发怪异模式。 如果 DOCTYPE 之前有任何语句,quirks 模式在任何版本的 IE 中(截至 IE 9)同样会被触发。例如,如果一个超文本文件在 DOCTYPE 前包含一个注释或者任何标签,IE (截至 9) 会使用 quirks 模式: <!-- This comment will put IE 6, 7, 8,and 9 in quirks mode --> <!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> XML 声明的问题在Internet Explorer 7 中被解决了,在此 XML 声明只是简单的被忽略。然而,为对现存和更早的网页浏览器的最大程度的兼容,万维网联盟,维持 XML 规范的组织,建议 XHTML文件的作者可以考虑省略XML 声明。
判断浏览器模式
js方法 alert(window.top.document.compatMode) //BackCompat 怪异模式 //CSS1Compat 标准模式 jquery方法 alert($.boxModel) alert($.support.boxModel)
相关文章推荐
- 什么是W3C标准
- 标准html符合w3c的源代码
- javascript 学习(一) w3c 标准
- 针对于不同web标准(w3c与非w3c)的兼容性写法
- HTML
- W3C标准定义的阻止事件向父容器传递
- w3c标准
- 盒子模型的尺寸解析
- 简述W3C代码标准及规范
- layer-list简单使用教程
- poj 3094 Quicksum
- 记一个复制黏贴的功能想法(黏贴剪切板中的数字自增,复制黏贴自增)
- fatal error C1189: #error : WRL requires NTDDI_VERSION to be #defined at least
- UI更新三种方法
- session.createQuery()与createSQLQuery()区别
- leetcode:96. Unique Binary Search Trees
- UIViewController各个方法的加载顺序
- java源码分析(5)-StringBuilder
- 187. Repeated DNA Sequences
- iOS开发所有键盘类型-UIKeyboardType