我正在尝试使用
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]-->
答案 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'
alert($.browser.versionNumber); // this will alert '30'
我个人发现它使用起来非常简单。缩小版仅为1.44KB。请参阅链接。