2013-10-21 58 views
17

我一直在努力让自己的努力获得评论条件工作,我没有任何运气有人可以解释我做错了什么?如果IE条件不起作用

这里是我的代码:

 <!--[if IE 10]> 
      IE IS VERSION 10<br /> 
     <![endif]--> 
     <!--[if !IE]><!--> 
      Browser is not IE 
     <!--<![endif]--> 
     <!--[if lt IE 9]> 
      IE IS LESS THAN VERSION 9<br /> 
     <![endif]--> 

正在发生的事情是令人沮丧不一致的。当我用IE8上面的代码加载页面时,它会收到消息“IE不到版本9”很好的吗?没有,因为当我在IE10加载在同一页我得到的消息“的浏览器不是IE”

为什么会认为IE10是不是IE浏览器?我一直在抓取页面,但从我发现的代码中看来没有任何问题。

+0

唯一的工作代码程式码中的最后一个。 IE10不支持条件注释,因此'[如果IE 10]'不起作用。只有IE <10支持条件注释,因此'[if!IE]'是无用的。正如你可以在你的发布代码中看到的那样,在“!IE”条件中有一个“语法错误”,因此文本“浏览器不是IE”应当实际显示在每个浏览器中...... – Teemu

+11

我讨厌Internet Explorer – wvdz

回答

15

IE 10不支持的条件语句。

Conditional statements in Internet Explorer 10.。它会将条件注释视为普通的HTML注释,并完全忽略。

使用功能检测库(如Modernizr)代替浏览器检测。

在此comment找到了解决方案上impressivewebs

Here is Demo to test

解决的办法是:

if (Function('/*@cc_on return [email protected]*/')()) { 
    alert('IE 10'); 
} else { 
    alert('Not IE 10'); 
} 

  • 不需要有条件的意见;
  • 即使评论剥离压缩/处理工程;
  • 没有ie10类加入互联网 资源管理器  11;
  • 更可能按照预期与Internet工作  Explorer   11在Internet上运行  Explorer   10兼容模式;
  • 不需要独立的脚本标记(只能添加到头部的其他JavaScript代码中)。
  • 不需要jQuery的测试
+0

“跨浏览器最佳实践”链接 –

+0

@Fabián其完美的工作,请参阅https://www.modern.ie/en-us/category/code-with-standards –

3

IE 10删除了条件注释。

你可以在JavaScript中类似这样的事情:

if ($.browser.msie && $.browser.version === 10) { 
    // stuff here (like adding an IE10 class to the body or html tag 
} 
+1

是的,但是这需要我包括JQUERY :( – TheSnooker

+1

那么,如果条件已经被放弃在IE10上,你没有太多的选择,你呢? – Rafael

+5

不幸的是,这个功能在jQuery 1.9中被删除 – user1618143

1

尝试添加以下meta标签附近的页面顶部选择加入Internet Explorer 9的行为:

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

这是因为条件注释已在Internet Explorer 10标准和怪癖模式中被删除,以提高互操作性并符合HTML5。这意味着条件注释现在被视为常规评论,就像在其他浏览器中一样。此更改可能会影响专门为Windows Internet Explorer编写的页面或使用浏览器嗅探来改变其在Internet Explorer中的行为的页面。

14

我很惊讶,没有一个人在一个只有CSS的解决方案增加了。如果你只是想用css,然后使用如下语句:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 
    /* Put your IE-only styles here. Works for IS 10 & IE 11*/ 
} 

这样你就不必依赖jQuery的,或任何HTML标记。只要将它张贴在CSS中,你就可以走了。

现在,这是一个黑客?有可能。这取决于使用微软高对比度标签,但由于没有其他浏览器使用MS标签,那么你应该很好去。

最后,检查这些页面的详细信息:

Blog Post

MS Site on the contrast tag

+0

谢谢Maximus,真棒技巧......... ................我恨你IE – akokani