使用JQuery检测浏览器

时间:2010-07-19 17:32:33

标签: jquery browser if-statement

我正在尝试使用

    jQuery(document).ready(function () {
        if (!jQuery.browser.msie <= 7.99) {
                jQuery('#element').css('display', 'block');
        }
    });

但它似乎不起作用?我做错了什么?

THX

修改:使用条件评论

<!--[if !IE]>
<!--[if lt IE 8]> 

//do stuff
<![endif]-->
<![endif]-->

6 个答案:

答案 0 :(得分:7)

jQuery.browser.version正是您正在寻找的。你可能应该parseFloat

总的来说,除非绝对没有办法进行特征检测,否则它会被视为依赖浏览器嗅探。它可能有助于告诉我们真正的问题是什么。

编辑:您应该使用条件注释来为IE7及以下版本提供规则/样式表。

答案 1 :(得分:3)

这似乎与我的有限测试有关:

jQuery(document).ready(function () {
  if(jQuery.browser.msie){
     if(parseFloat(jQuery.browser.version) < 8){
        //Versions of IE less than 8
        jQuery('#element').css('display', 'block');
     }
     else{
       //code for versions of IE at least 8 (currently 8 and 9)
     }
  }
  else{
     //code for browsers other than IE (Firefox Safari, chrome, Opera, etc.)
  }
});

答案 2 :(得分:3)

这不能回答您的具体问题,但我建议采用更简单的方法。使用IE条件注释将特定ID应用于body标签。例如:

<!--[if !IE]> -->
<body>
<!--<![endif]-->
<!--[if IE 7]>
<body id="IE7">
<![endif]-->

然后通过jQuery检测它变得非常简单:

if($('body').is('#IE7'))...

答案 3 :(得分:2)

您应该使用条件注释,更快,更简单,更短,如下所示:

<!--[if lt IE 8]>
  <style type="text/css">#element { display: none; }</style>
<![endif]-->

这将隐藏IE7及以下的元素。您不需要任何脚本,只需删除当前最初将其隐藏在原始样式表(或内联)中的display: none

有关Google Pagespeed的评论不喜欢这个...忽略它,如果你必须修复IE7错误,修复它,正确的方法。这更快更简单...如果Pagespeed能够检查您是否正在使用用户代理执行此操作(jQuery.browser执行此操作),则建议不要这样做,它只是没有机制告诉你这是更糟糕的方法。

答案 4 :(得分:0)

jQuery.browser.msie

返回true或false

jQuery.browser.version

是检查browserversion的那个。

答案 5 :(得分:0)

您可以使用jQuery Browser Plugin。它为您提供了一个javascript对象,其中包含有关所使用的浏览器的所有信息 例如:

  • browser.name:正在使用的浏览器的名称 alert($.browser.name); // this will alert 'firefox'
  • browser.versionNumber``:浏览器的版本(注意:整数) alert($.browser.versionNumber); // this will alert '30'

我个人发现它使用起来非常简单。缩小版仅为1.44KB。请参阅链接。