浏览器标准模式(standars mode)与怪异模式(Quirks mode)浅析

标准模式与怪异模式产生原因

在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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值