IE条件注释

条件注释 (conditional comment) 是于HTML源码中被 Microsoft Internet Explorer 有条件解释的语句。条件注释可被用来向 Internet Explorer 提供及隐藏代码,是一个类似IF判断的语法注释块,IE5之上支持。

1. 有两种“条件注释”:下层显示 (downlevel revealed)下层隐藏(downlevel hidden)

每种注释的基本句法如下表所示。第一条展示的是基本的 HTML 注释,被包括在内作为比较以及用以说明被每种条件注释使用的不同句法。

注释类型 句法或可能取值
标准 HTML 注释<!-- Comment content  -->
downlevel-hidden<!--[if expression]> HTML <![endif]-->
downlevel-revealed<![if expression]> HTML <![endif]>

下层显示

<![if !IE]>
<link href="non-ie.css" rel="stylesheet">
<![endif]>
下层隐藏

<!--[if IE 8]>
<link href="ie8only.css" rel="stylesheet">
<![endif]-->

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

最普遍使用场景1

<!--[if IE 8]>
<link href="ie8.css" rel="stylesheet" type="text/css" media="screen" />
<![endif]-->
<!--[if IE 7]>
<link href="ie7.css" rel="stylesheet" type="text/css" media="screen" />
<![endif]-->
<!--[if lt IE 7]>
<link href="ie7lt.css" 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中的条件注释

自 Internet Explorer 4 开始,存在一种于 JScript 之中加入条件注释的类似的专有的机理,名称是条件编译。[6] 代码示例:

<script>
/*@cc_on
  document.write("You are using IE4 or higher");
@*/
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值