03-quirks mode 和 standars mode

quirks mode 和 strict mode 主要体现在浏览器解析css的两种模式,或者可以称之为解析方法。目前正在使用的浏览器这两种模式都支持 。

当早期的浏览器对css进行解析时,并未遵守W3C标准,这时的解析方式就被我们称之为 quirks mode(怪异模式), 但随着W3C的标准越来越重要,众多的浏览器开始依照W3C标准解析CSS,仿照W3C标准解析CSS的模式我们叫做 strict mode(严格模式).
这样浏览器渲染上就产生了Quircks mode和 Standars mode,两种渲染方法共存在一个浏览器上。

那么浏览器究竟该采用哪种模式渲染呢?这就引出的DTD,既是网页的头部声明,浏览器会通过识别DTD而采用相对应的渲染模式:

  1. 浏览器要使老旧的网页正常工作,但这部分网页是没有 doctype 声明的,所以浏览器对没有 doctype 声明的网页采用 quirks mode 解析。

  2. 对于拥有 doctype 声明的网页,什么浏览器采用何种模式解析,这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/

  3. 对于拥有 doctype 声明的网页,这里有几条简单的规则可用于判断:对于那些浏览器不能识别的 doctype 声明,浏览器采用 strict mode 解析

  4. 在 doctype 声明中,没有使用 DTD 声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析。

  5. 可以这么说,在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的。

  6. 在ie6中,如果在doctype声明前有一个xml声明(比如:

void function(){ 
var mode=document.compat 
if (mode="BackCompat") 
alert("当前以quirks mode的方式渲染页面"); 
else if(mode="CSS1Compat") 
alert("当前已strict mode的方式渲染页面"); 
else alert("浏览器版本不支持compatMode"); 
}() 

Js代码
var ua = navigator.userAgent.toLowerCase();
var client = {
isStrict: document.compatMode == ‘CSS1Compat’,
isOpera: ua.indexOf(‘opera’) > -1,
isIE: ua.indexOf(‘msie’) > -1,
isIE7: ua.indexOf(‘msie 7’) > -1,
isSafari: /webkit|khtml/.test(ua),
isWindows: ua.indexOf(‘windows’) != -1 || ua.indexOf(‘win32’) != -1,
isMac: ua.indexOf(‘macintosh’) != -1 || ua.indexOf(‘mac os x’) != -1,
isLinux: ua.indexOf(‘linux’) != -1
};
client.isBorderBox = client.isIE && !client.isStrict;
client.isSafari3 = client.isSafari && !!(document.evaluate);
client.isGecko = ua.indexOf(‘gecko’) != -1 && !client.isSafari;

   /** 
     * You're not sill using IE6 are you? 
     */   
   var ltIE7 = client.isIE && !client.isIE7;   

var ua = navigator.userAgent.toLowerCase();
var client = {
isStrict: document.compatMode == ‘CSS1Compat’,
isOpera: ua.indexOf(‘opera’) > -1,
isIE: ua.indexOf(‘msie’) > -1,
isIE7: ua.indexOf(‘msie 7’) > -1,
isSafari: /webkit|khtml/.test(ua),
isWindows: ua.indexOf(‘windows’) != -1 || ua.indexOf(‘win32’) != -1,
isMac: ua.indexOf(‘macintosh’) != -1 || ua.indexOf(‘mac os x’) != -1,
isLinux: ua.indexOf(‘linux’) != -1
};
client.isBorderBox = client.isIE && !client.isStrict;
client.isSafari3 = client.isSafari && !!(document.evaluate);
client.isGecko = ua.indexOf(‘gecko’) != -1 && !client.isSafari;

    /** 
     * You're not sill using IE6 are you? 
     */ 
    var ltIE7 = client.isIE && !client.isIE7; 

“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值