咱平时看别人网页代码的时候,经常会看到在<head>标签中,有这么一个<meta>标签:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"
这里的IE=EmulateIE7,或者是IE=EmulateIE8等等有什么作用。与IE=7有什么区别呢?且听我说。
08年的时候,IE8发布了,作为IE7的重大改版,受到了业界的广泛关注。用户都迫切地想下载IE8来尝鲜,但是程序员们发现原本IE7里面,网页样式好好的,一到IE8里就都乱套了。
微软一面苦口婆心地劝说程序员们顺应新的标准,对代码进行更新;一面又要迎合程序员们,不能让他们加班加得太狠。对于旧有的网页,如果要在IE8中正常显示的话,首先引入了:
<meta http-equiv="X-UA-Compatible" content="IE=7"
可是程序员们马上就发现,如果你的网页里面,有iframe,而iframe中内嵌的网页是 quirks 模式的,(题外话,你们管这个模式叫啥?我叫他奇葩模式)也就是非标准文档模式,也会用IE7的标准模式去渲染(说白了就是去解释网页的代码)。而奇葩模式的网页文档只有在IE5下才能够正常显示。于是乎,对于每个此类文档,都需要在<meta>标签中加入 IE=5 。如果数量少还好,如果数量多到令人发指,估计程序员又要秒变带刀校尉了。
真为产品经理捏把汗啊。
于是乎,IE=EmulateIE7应运而生。这个代码:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"
所表示的意思是,对于标准模式的文档,即开头有<!DOCTYPE>的HTML文件,使用IE7的标准模式来渲染。对于文件开头没有 <!DOCTYPE> 的文档,使用quirks模式进行渲染,即IE5的模式进行渲染。
这样一来,程序员只需要在最外层的网页中,加入一句这句代码,就可以搞定整个页面,包括内部的 iframe 页面啦。
优先级:
X-UA-Compatible > DOCTYPE > 服务器HTTP header