【问题标题】:Hiding some HTML from IE6?从 IE6 中隐藏一些 HTML?
【发布时间】:2010-11-15 07:49:43
【问题描述】:

我试过了:

<!--[if lt IE 6.0]>
HTML TO HIDE FROM IE6
<![endif]-->        

但不幸的是,这些东西也被 Firefox 隐藏了。有人有有效的方法吗?我希望这些东西只对 IE6 隐藏

谢谢

【问题讨论】:

    标签: html internet-explorer internet-explorer-6


    【解决方案1】:

    对您的问题有点困惑,但这是用于检测 Internet Explorer 版本的 javascript 代码。取自Detecting Internet Explorer More Effectively。将要在 IE6 中隐藏的 HTML 内容添加到一个 div 中,并使用下面的函数将其隐藏。

    function getInternetExplorerVersion()
    // Returns the version of Internet Explorer or a -1
    // (indicating the use of another browser).
    {
      var rv = -1; // Return value assumes failure.
      if (navigator.appName == 'Microsoft Internet Explorer')
      {
        var ua = navigator.userAgent;
        var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
          rv = parseFloat( RegExp.$1 );
      }
      return rv;
    }
    function checkVersion()
    {
      var msg = "You're not using Internet Explorer.";
      var ver = getInternetExplorerVersion();
    
      if ( ver > -1 )
      {
        if ( ver == 6.0 ) 
    
                **Hide the DIV here**
    
      }
      alert( msg );
    }
    

    【讨论】:

      【解决方案2】:

      试试

      <!--[if lte IE 6.0]>
      

      在您的 CSS 中,使用 lte(小于或等于)而不是 lt(小于)。

      【讨论】:

        【解决方案3】:

        条件 cmets 根本不应该影响 Firefox,因为它们被注释掉并且浏览器应该忽略它。我会检查您的 Firefox 样式表是否正确并正确嵌入,如下所示:

        <link href="/css/main.css" rel="stylesheet" type="text/css" />
        <!--[if lt IE 7]>
        <link href="/css/ie6.css" rel="stylesheet" type="text/css" media="screen"/>
        <![endif]-->
        

        【讨论】:

          【解决方案4】:

          实际上,与 deceze 的答案相反,您可以使用条件 cmets 向 Internet Explorer 隐藏内容。这些类型的条件 cmets 称为“Downlevel Reveal Conditional Comments”。 (这些不同于用于向 Internet Explorer 显示内容的更常见的 cmets,它们被称为“下层隐藏条件 cmets”)

          
          <!--[if lte IE 6]><![if gte IE 7]><![endif]-->
          <!-- This is a bit mad, but code inside here is served to everything 
              except browsers less than IE7, so all browsers will see this -->
          <!--[if lte IE 6]><![endif]><![endif]-->
          

          但是,如果您已经使用低级隐藏条件注释来仅向 IE6 显示 IE6 样式表,那么您最好只使用 CSS 将其隐藏。

          我希望这会有所帮助。

          【讨论】:

          • 这很好,因为它将 结构放在 HTML cmets 中,所以页面仍然可以验证。
          • +1,但有一个更短更清晰的版本。请参阅下面的答案。
          【解决方案5】:

          编辑

          阅读Natalie Downe's answer后,我会这样做:

          <!--[if true]><![if !IE]><![endif]-->
          <h1>You're not using IE. Well done!</h1>
          <!--[if true]><![endif]><![endif]-->
          

          您可以使用 negated conditional cmets 对 IE 隐藏内容,但不能对其他浏览器隐藏内容。

          <!DOCTYPE html>
          
          <html>
          <head>
          <title></title>
          <style type="text/css"></style>
          <script type="text/javascript"></script>
          </head>
          <body>
          
          <![if !IE]>
          <h1>You're not using IE. Well done!</h1>
          <![endif]>
          
          </body>
          </html>
          

          它会呈现一些无效的标记,但它可以工作。

          参考:http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx

          【讨论】:

            【解决方案6】:

            Natalie Downe 的回答已经足够好了,但是有一个更短更清晰的版本可以隐藏 IE6(或任何低于 10 的版本)的内容:

            <!--[if !IE 6]><!-->IE6 can't see me<!--<![endif]-->
            

            要针对IE6及以下,可以使用

            <!--[if gt IE 6]><!-->IE6 and lower can't see me<!--<![endif]-->
            

            如果你只想支持IE10+,你可以使用

            <!--[if !IE]><!-->IE9 and lower can't see me<!--<![endif]-->
            

            事实上,IE10+ 不支持条件 cmets。灵感来自Browserhacks

            当然,所有其他浏览器都可以看到内容,因为它都是有效的 HTML。

            【讨论】:

              猜你喜欢
              • 2013-01-31
              • 2016-10-22
              • 2016-08-23
              • 2020-11-05
              • 1970-01-01
              • 1970-01-01
              • 2014-12-09
              • 1970-01-01
              • 2014-02-08
              相关资源
              最近更新 更多