IE条件注释可以怎么玩

如果玩过条件注释的,可以忽略以下基础介绍。

IE条件注释(Conditional comments)是IE浏览器私有的代码,是一个类似IF判断的语法注释块,IE5之上支持。

代码看起来是这样的

!--[if IE 6]>

你正在使用IE6

![endif]-->复制代码

他的语法是一个普通的HTML注释 !– comments –>,分支块以 [if 条件(conditional)]> 开始 ![endif]结束。条件和JS中的if很类似,布尔值类型,可以把浏览器特性作为条件,比如IE ,IE 6, IE 7 ,此外还支持 非(!) 、与(&) 、或(|)、 括号、 大于(gt)、 大于等于(gte)、 小于(le) 、 小于等于(lte)。

直观的代码如下:

p class="accent">

!--[if IE]>

According to the conditional comment this is IEbr />

![endif]-->

!--[if IE 6]>

According to the conditional comment this is IE 6br />

![endif]-->

!--[if IE 7]>

According to the conditional comment this is IE 7br />

![endif]-->

!--[if IE 8]>

According to the conditional comment this is IE 8br />

![endif]-->

!--[if IE 9]>

According to the conditional comment this is IE 9br />

![endif]-->

!--[if gte IE 8]>

According to the conditional comment this is IE 8 or higherbr />

![endif]-->

!--[if lt IE 9]>

According to the conditional comment this is IE lower than 9br />

![endif]-->

!--[if lte IE 7]>

According to the conditional comment this is IE lower or equal to 7br />

![endif]-->

!--[if gt IE 6]>

According to the conditional comment this is IE greater than 6br />

![endif]-->

!--[if !IE]> -->

According to the conditional comment this is not IEbr />

!-- ![endif]-->

/p>复制代码

更详细的信息可以在微软MSDN文档中查看

基础介绍完毕,这个东西可以做IE浏览器检测,所以变成了CSS兼容多版本浏览器的方案之一。

最普遍使用场景1

!--[if IE 8]>

link href" rel="stylesheet" type="text/css" media="screen" />

![endif]-->

!--[if IE 7]>

link hr" rel="stylesheet" type="text/css" media="screen" />

![endif]-->

!--[if lt IE 7]>

link href="ss" rel="stylesheet" type="text/css" media="screen" />

![endif]-->复制代码

既可以解决浏览器差异,还可以保证CSS的标准化,避免了很多私有CSS属性作为hack的方式。

可是这样会增加过多的文件加载,维护代码数量也增加,有没有更好的方式?

使用场景2

!--[if lt IE 7]>html class="ie6 oldie" lang="zh">![endif]-->

!--[if IE 7]>html class="ie7 oldie" lang="zh">![endif]-->

!--[if IE 8]>html class="ie8 oldie" lang="zh">![endif]-->

!--[if gt IE 8]>!--> html lang="zh"> !--![endif]-->复制代码

场景1中的问题就解决了。通过选择器的优先级就可以轻松解决差异。

有了条件注释,JS也能从总获益,免去的通过JS去判断浏览器类型和版本了。

比如:如果你的页面想使用html5标签,条件注释也能发挥作用。

!--[if lte IE 8]>

script>

(function(){

var e="abbr,article,aside,audio,canvas,datalist,details,dialog,eventsource,figure,

footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video".split(‘,‘),

i=e.length;

while(i--){

document.createElement(e[i]);

}

})();

/script>

![endif]-->复制代码

再比如:IE6的背景图片缓存问题!--[if IE 6]>

script>

document.execCommand("BackgroundImageCache", false, true);

/script>

![endif]-->复制代码

甚至还可以帮助JS直接获取浏览器信息,大多数库和方案识别浏览器都是通过userAgent串处理的,而且大部分的应用场景也是if (IExx) {doxx}

function isIE(v)

var v=v || "",

tester=document.createElement(‘div‘);

tester.innerHTML=‘!--[if IE ‘ + v + ‘]>i>/i>![endif]-->‘;

return !!tester.getElementsByTagName(‘i‘)[0];

}复制代码

form: hect/

还可以在HTML代码中玩

body>

!--[if lte IE 8]>

p>亲爱的用户,您的浏览器版本过低,建议您升级浏览器获得更好的体验..../p>

![endif]-->复制代码

或许还有更多的玩法,就等待您的发现和分享了。

最后,条件注释也不仅限于HTML中,JS也可以有,那就是JScript的特性了,这种坑爹的东东还是少用的好,因为JS中的注释总是要被压缩掉的。

script>

/script>复制代码

时间: 2024-11-10 11:20:18

IE条件注释可以怎么玩的相关文章

IE条件注释

条件注释是IE专门提供的一种语法,其他浏览器会将其作为注释而忽略这些语句. 作用:根据不同的IE版本加载对应的CSS或者JS文件,甚至css代码和html代码. 重要提示 自IE10起,标准模式不再支持条件注释.而是采用特征检测给浏览器不支持的功能来提供备用策略.有关标准模式的详细信息,请参阅定义文档兼容性. 术语 熟悉下列术语有助于你学习文档兼容性. 名词 描述 expression 由运算符.特征和(或)值组合形成一个条件语句 downlevel browser 任何浏览器除了IE5+,其他

html条件注释

HTML条件注释用法诠释 注释内容以样式为例,如下: 1.支持所有IE浏览器 <!--[if IE]> <link rel="stylesheet" href="all-ie-only.css" type="text/css"/> <![endif]--> 2.支持非IE浏览器 <!--[if !IE]> <link rel="stylesheet" href="

CSS条件注释

由于浏览器版本的不同,对CSS里某些元素的解释也不一样,针对浏览器版本不同而选择不同CSS的代码,其实我们还可以利用条件注释的方法来达到类似的目的,什么是条件注释,在此简单介绍一下,无非就是一些if判断啦,呵呵,但这些判断不是在脚本里执行的,而是直接在html代码里执行的,下面来介绍一下使用方法吧. <!--[if XXX]>这里是正常的html代码<![endif]–>这里XXX是一些特定的东东,在此列表几个出来,详细介绍各自的含义:<!–[if IE]> / 如果浏

用条件注释判断浏览器版本解决页面兼容问题

在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,那么如何解决兼容问题呢,本文就为大家一一道来对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢? 首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因

IE浏览器条件注释if IE详解

无论是google还是百度搜到的if IE条件注释用法,排在前面的几个搜索结果文章都是有错误和漏洞的,而这些漏洞和错误导致我一度误以为有些IE条件注释已经失效了,即使不是失效,也令我 很费解.今天抽时间查阅了些老外写的东西,并且都试验了一遍.发现给我造成费解的原因是那些文章大多都是抄来的,没有经过亲自试验,在复制来复制去的过程 中就把某些关键的地方弄错了:( 现将正确的if IE条件注释用法总结一下,以便以后使用: 运算符 示例 说明 ! [if !IE] 非运算符.该例子表示所有的非IE浏览器

IE里的条件注释

<!--[if IE 6]> <script src="excanvas.js" type="text/javascript" charset="utf-8"></script> //引入IE 图像类库 <![endif]--> <!--[if IE 6]> 内容 <![endif]--> <!--[if !IE]><--> 内容 <!-->

用条件注释判断浏览器版本,解决兼容问题

对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢? 首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因为不同的浏览器在解析页面时,他们所遵循的规则并不是完全相同的.比如IE,不同的版本解析都不同,何况是不同的浏览器厂商,不同的内核呢.但是我们在遇到兼容性问题时,应该首先检

使用html进行浏览器判断,浏览器条件注释

下面来点今天写东西的时候查资料,收集的关于使用html进行浏览器判断的一些资料: 条件注释的基本格式: <!--[if expression]>注释内容<![endif]--> 或者 <![if expression]>注释内容<![endif]> 基本上所有的条件注释就根据上面的内容而来 expression的常用值: IE ie浏览器 IE version 版本为version的ie浏览器 lt IE version 版本号小于version lte I

HTML if条件注释

if IE条件注释起着非常大的作用! if IE什么意思呢?下面就列举了一些在CSS常见的HACK控制语句. 作为IE的IF条件注释使用备忘,有些时候试用if IE而不是在css中使用hack. 在HTML中使用条件if注释,让客户端的不同版本IE浏览器读取各自版本浏览器注释里内容. <!--[if !IE]>除IE外都可识别<![endif]--> <!--[if IE]> 所有的IE可识别 <![endif]--> <!--[if gt IE 5.