【问题标题】:Detect IE using html in IE10在 IE10 中使用 html 检测 IE
【发布时间】:2014-09-04 12:49:05
【问题描述】:

我有这部分语法

<!DOCTYPE html>
<!--[if IE]> <html lang="en" class="ie">  <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="ie8">    <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="ie9">    <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html lang="en">
<!--<![endif]-->

它适用于IE 8IE 9,但不适用于IE。有什么建议吗?

我有一些css 想在浏览器一般为IE 时应用。

示例:

.ie #nav ul#top-nav li.top-nav-item a.top-nav-link {
                width: 167px;
            }

编辑 我有一个TypeKit,目前在 IE 中不工作。我想做一些css 调整,以便我的页面在IE 上看起来很好,直到我找到TypeKit 问题的解决方案

【问题讨论】:

  • IE 10+ 不支持条件 cmets...
  • 可能是因为IE 8IE 9 实际上会取代IE
  • <!--[if !IE]> not working的可能重复
  • 为什么需要这样做?
  • @thirtydot 我有一些 fontkit 目前无法在 IE 上运行,所以我需要修复一些字体间距和其他东西,直到找到 fontkit 的解决方案

标签: html css internet-explorer


【解决方案1】:

您可能希望它触发 IE10 和 IE11,但它不会,因为在 IE10 中完全删除了对条件 cmets 的支持

http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx:

已在 Internet Explorer 中删除对条件 cmets 的支持 10 种标准和怪癖模式,用于提高互操作性和 符合 HTML5。这意味着条件注释现在是 被视为常规 cmets,就像在其他浏览器中一样。

由于 IE10+ 确实是非常符合标准的浏览器,因此不应该再有理由进行这样的浏览器嗅探。但是,如果出于某种神秘的原因您真的真的需要修补 IE 特定的行为,您应该能够通过使用 Javascript 来解析 navigator.appVersion 以查找 Trident/ 的出现。当然,它并不完全可靠,就像任何一种嗅探一样。

要获得更好、更可靠的特定于浏览器的行为,请考虑包含 Modernizr 以专门测试某些功能。

【讨论】:

  • 那我应该使用js 类型的解决方案吗?
  • @Rami.Shareef 你到底想完成什么。 IE 10 和 11 在渲染 CSS 方面比以前的版本好很多。是否真的需要针对这些版本进行样式修复?
  • @rami.shareef 从 IE10 中删除了支持条件,我认为 IE11(从来没有看到任何关于他们把它带回来的东西)javascript 或 jquery 将是唯一容易可行的方法来做你的事情'重新找做。 IE10 和 11 渲染页面现在非常符合 CSS 和 html 的标准,所以我会在实现 javascript 之前先寻找一种 CSS 方法来解决您的问题。除非您已经在页面中使用了 javascript,因为添加它是一个简单的额外功能,不会真正减慢任何速度。
  • @Rami.Shareef 详细阐述了我的答案,但就像每个人都说的那样,您通常不应该为检测 IE 而烦恼。
  • 不错的答案@NielsKeurentjes
【解决方案2】:

&lt;!--[if IE]&gt; &lt;html lang="en" class="ie"&gt; &lt;![endif]--&gt; 不适用于 IE 10+。 Microsoft 从版本 10 开始从 IE 浏览器中删除了此功能。

参考:

Conditional Comments

【讨论】:

    【解决方案3】:

    文档只能有一个html标签,所以只有IE被特定的版本标签覆盖。

    您需要将ie 类添加到特定于版本的标签中。

    <!--[if IE 8 ]>    <html lang="en" class="ie8 ie">    <![endif]-->
    <!--[if IE 9 ]>    <html lang="en" class="ie9 ie">    <![endif]-->
    

    此外,在 IE10+ 中删除了对条件 cmets 的支持。

    【讨论】:

      【解决方案4】:

      我相信较新版本的 IE ( 10+ ) 不具备使用 html 来检测浏览器版本的能力。这是一个小的 javascript sn-p,它将向 html 标记添加一个类,以便您可以为 IE10 命名 CSS。我确信一些调整也适用于 IE11...

       if (navigator.userAgent.indexOf("MSIE 10") > -1) {
           $("html").addClass("ie10");
      
       }
      

      我希望这会有所帮助:)

      【讨论】:

      • 我建议解析 appVersion 而不是 userAgent - 它被欺骗的频率较低。而且 IE11 已经改变了它的整个用户代理语法,谁知道他们会在 IE12 中做什么。
      【解决方案5】:
         <!--[if !IE]><!--><script>  
         if (/*@cc_on!@*/false) {  
          document.documentElement.className+='ie10';  
         }  
         </script><!--<![endif]-->
      

      这是用来检测IE 10浏览器的

      【讨论】:

        猜你喜欢
        • 2013-04-28
        • 1970-01-01
        • 2013-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多