meta中的http-equiv = "X-UA-Compatible"

       今天看到<meta http-equiv = "X-UA-Compatible" content="ie=edge">这个标签感到很困惑,按捺不住好奇心去查了下,总结了几篇讲的比较好的文章,写下一些感悟。

百度经验:https://jingyan.baidu.com/article/bea41d43a40910b4c51be60a.html ;

长江之友博客文:https://blog.csdn.net/changjiangbuxi/article/details/26054755

首先我们解释一下这条语句:

    http-equiv = "X-UA-Compatible":

    这个是针对ie8以上浏览器的一个属性,ie8一下无法识别。就是说ie8以上浏览器遇到这个属性会执行content的描述,大小写不敏感。

    ie=edge:

    ie浏览器将执行当前支持的最高版本,大小写不敏感,例如:

<meta http-equiv="X-UA-Compatible" content="IE=5" />
所有版本都使用ie5的文档模式(ie5/ie6 使用的是quirks mode,译作“怪异模式”)

<meta http-equiv="X-UA-Compatible" content="IE=7" />
无论页面是否包含 <!DOCTYPE> 指令,均使用 Windows Internet Explorer 7 的标准渲染模式

<meta http-equiv="X-UA-Compatible" content="IE=8" />
由于本身 X-UA-Compatible 文件头只有IE8 以上版本才能识别,因此等同于冗余代码

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
以最高级别的可用模式显示内容,ie7支持最高ie7,ie8支持最高ie8,它也支持8以下的,但以最高支持的模式使用,往上类似。

还有一些特殊写法:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>

    如果安装了 Google Chrome Frame (谷歌浏览器內嵌框架)则使用谷歌浏览器内核模式,否则使用最新的IE模式。

    针对IE 6,7,8等版本的浏览器插件Google Chrome Frame,可以让用户的浏览器外观依然是IE的菜单和界面,但用户在浏览网页时,实际上使用的是Google Chrome浏览器内核。

    如果不指定ie=edge时,当用户浏览器没有chrome内核时,会弹出提示框,提醒用户安装该内核。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />

    首先我们认识一个单词(我不认识……),emulate : 模拟,模仿。

    如果不使用emulate,不论是否有!DOCTYPE,都将以标准模式ie8渲染,如果时ie5/ie6的话则不生效,因为无法模拟高版本的模式。

如果你的网页开头带有 <!DOCTYPE> 标记,则模拟 IE8, 等同于:

<meta http-equiv="X-UA-Compatible" content="IE=IE8"/>

如果你的网页开头没有 <!DOCTYPE> 标记,则模拟 IE6, 等同于:

<meta http-equiv="X-UA-Compatible" content="IE=IE5"/>

版本升级提示:

实际上,由于 IE11 以下版本都已经停止更新,绝大部分前端开源项目都已经不再兼容 IE11 以下的旧版IE。往下兼容到 IE8 版本的网站已经寥寥无几,兼容 IE7/IE6 更是近乎绝迹。

但是,即使每天只有稀稀拉拉几个旧版IE用户访问网站,我们也不应该让他看到一屏乱码。面对依然使用旧版IE的用户,我们可以友好地提示其升级浏览器后再访问。

通过以下代码,当用户使用已经停止更新的IE10或旧版IE访问网站将会自动跳转到浏览器升级页:

<script>
/*@cc_on
window.location.href="http://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); @*/
</script>

@cc_on 是 IE10 及更旧版IE特有的条件编译语句,因此可以用来判断是否除 IE11 的其他IE版本 ,

[if ie8]:只有ie8能识别,例如:

<!--[if IE 8]><script>一些代码</script><![endif]-->;

[if ite ie8]:ie8及其以下,例如:

<!--[if lte IE 8]><script>一些代码</script><![endif]-->;

但是ie10及以上版本不再支持if ie判断,所以对于想要更新到ie11的提示判断都可以用 @cc_on。

双核浏览器的兼容:

国产浏览器大多带有 Chromium 内核和 IE 内核,在用户访问网页时双核浏览器根据网页内容自动选择内核。不过,双核浏览器也提供了类似 X-UA-Compatible 特性的 meta 标记,允许网页开发者通过标记选择内核。

一、使用 Chromium 内核(极速模式)

<meta name="renderer" content="webkit"/>

二、使用 IE 8/9/10/10 内核(IE标准模式,部分支持 HTML5)

<meta name="renderer" content="ie-stand"/>

三、使用 IE 6/7 内核(IE兼容模式,不支持 HTML5)

<meta name="renderer" content="ie-comp"/>

如果网站采用最新CSS3/HTML5编写,那么,我们应该令其使用 Chromium 内核(也就是 Webkit 内核)渲染。

代码如下:

<meta name="renderer" content="webkit"/>

<meta name="force-rendering" content="webkit"/>

第一行作用于360浏览器、QQ浏览器等国产双核浏览器,第二行作用于其他双核浏览器。

如果网站在 IE 浏览器效果更好,那么,我们可以要求其使用IE标准内核渲染。

代码如下:

<meta name="renderer" content="ie-stand"/>

如有错误的地方欢迎指出,共同分享。

猜你喜欢

转载自blog.csdn.net/qq_41245969/article/details/82502166