如何使用JavaScript或jQuery检测IE7并将类添加到<div>元素?

15

有没有办法检测IE7?

我的代码在IE8中没有问题,但是在IE7中出现了问题。

因此,我的想法是在javascript检测到浏览器是IE7时,使用jquery添加一个类。

我想要从...更改

<div id="system">

<div id="system" class="ie7">

提前致谢。


2
这个问题是与样式还是JavaScript有关?如果与样式有关,您应该考虑使用建议的条件注释。如果这是JavaScript相关的事情,您应该阅读有关功能检测的内容,在很多方面它比浏览器嗅探更好。 - jwueller
7个回答

49

如果你确实想用JavaScript解决这个问题,你可能需要像这样检查版本:

if (navigator.appVersion.indexOf("MSIE 7.") != -1)
    $('#system').addClass('ie7');

+1 对于一个不依赖于 JavaScript 框架可用选项或条件注释的解决方案。 - klewis

10
你可以使用IE条件注释通过JavaScript添加类,类似于以下内容:
<!--[if IE 7]>
<script type="text/javascript">
$(document).ready(function() {
    $('#system').addClass('ie7');
});
</script>
<![endif]-->

9
你可以只使用HTML来完成这个操作:

只需使用HTML即可:

CSS

.ie7{
   padding: 0;
   color: red;
}

html

<!--[if IE 7 ]> <div id="system" class="ie7"> <![endif]-->
<!--[if (gt IE 7)|!(IE)]><!--> <div id="system"> <!--<![endif]-->
</div>

如果在Internet Explorer 7中执行此代码,将创建具有ie7类的div。所有其他浏览器和IE > 7都将创建没有该类的div。


我认为他想要一个jQuery的解决方案。不过,你的解决方案更好,因为用户可能会禁用JavaScript。 - Todd Moses
3
通常我会在一个地方使用<body class="ie7">,然后使用CSS包含选择器body.ie7 #system,以避免在整个文档中重复条件注释。 - bobince

9

要检测ie7,只需使用以下代码:

if($.browser.msie && parseFloat($.browser.version) < 8){
    //do other stuff
    return;
}

要按照您的需求操作它,只需要:

if($.browser.msie && parseFloat($.browser.version) < 8){
    $('#system').addClass('ie7');
}

13
现在(两年后),jQuery中已经移除了.browser - Brad

3

试试这个:

<!--[if IE 7]>
<script type="text/javascript">
  $('#system').addClass('ie7');
</script>
<![endif]-->

0
请注意,IE8兼容视图也将具有<!--[if IE 7 ]>为真。
因此,如果您不希望更改反映在IE8兼容视图中,请对文档模式进行第二级测试。
<!--[if IE 7]>
    <script type="text/javascript"> 
   try
    {
    if(document.documentMode!=8){
     //Your code comes here
    }
    }
    catch(exception){
    }
   </script>
<!--<![endif]-->


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接