【问题标题】:Javascript: change based on whether IE7 or notJavascript:根据是否为 ​​IE7 进行更改
【发布时间】:2010-05-26 19:48:38
【问题描述】:

我想根据浏览器是否为 IE7 更改我的 javascript 代码行。以下是任何其他浏览器的代码:

function showHint(myId) 
{
    document.getElementById(myId).style.display = "inline-block";
}

对于 IE7,我想要 display = "inline"。

我尝试过条件编译(this 向我展示了如何检测浏览器),但没有成功:

function showHint(myId) 
        {
            document.getElementById(myId).style.display = "inline-block";
            /*@cc_on
                @if(navigator.appVersion.indexOf(“MSIE 7.”)!=-1)
                {
                    document.getElementById(myId).style.display = "inline";
                }
            @*/
        }

非常感谢任何帮助!

编辑:我没有使用 JQuery。

【问题讨论】:

  • 你为什么需要这个?如果您真正追求的是特征检测 peter.michaux.ca/articles/…,那么用户代理嗅探是一种不好的方法
  • 你的问题是“为什么需要显示“inline”而不是“inline-block”?因为在 IE7 中,“inline-block”在元素下方显示一行,而“inline”没有t.
  • 什么是文档类型?页面是以标准模式还是 quirksmode 呈现的?你在validator.w3.org 中验证了吗?
  • Jeff Meatball Yang 的回答是最好的,因为它是唯一一个不会被浏览器愚弄的浏览器(除非出现其他浏览器并开始支持 IE 的条件 cmets,但这不太可能)。另一种方法是切换classNames,并在 CSS 中设置样式(更好地分离关注点)。

标签: javascript internet-explorer internet-explorer-7 conditional-compilation


【解决方案1】:

设置一个由IE的 conditional comment解析的行为决定的全局:

<!--[if IE 7]><script> var isIE7 = true; </script><![endif]-->

【讨论】:

    【解决方案2】:

    您需要查看navigator.userAgent

    如果你使用jQuery,你可以简单地写

    if ($.browser.msie && $.browser.version === 7)
    

    【讨论】:

      【解决方案3】:

      我认为你可以使用正则表达式来确定 MSIE 7:

      if(/MSIE 7/.test(navigator.appVersion)) { /* msie7 related code */ }
      

      【讨论】:

        【解决方案4】:

        有一个检测浏览器版本的 Jquery 插件。我不知道确切的链接...

        【讨论】:

          【解决方案5】:

          条件编译应该可以工作。您的错误似乎是您使用花哨的引号来分隔字符串 (“MSIE 7.”),或者您试图将显示分配给 IE 未知的东西,并且它适合它并引发错误。这是一个更简洁的函数版本,它不会重复自己并解决了这个问题:

          function showHint(myId) 
          {
              document.getElementById(myId).style.display = "inline" //@cc_on;
              + "-block";
          }
          

          【讨论】:

            猜你喜欢
            • 2017-01-21
            • 1970-01-01
            • 1970-01-01
            • 2017-09-01
            • 1970-01-01
            • 2019-09-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多