2010-09-08 10 views
14

¿Hay alguna forma de detectar IE7?Cómo detectar IE7 con javascript o jquery y agregar una clase a div

No tengo ningún problema con mis códigos en IE8, pero tengo un problema con IE7.

Entonces, lo que pensé es que puedo agregar una clase con jquery cuando un navegador es IE7 detectándolo mediante javascript.

Quiero cambiar de

<div id="system"> 

a

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

Gracias de antemano.

+2

¿Este problema está relacionado con los estilos o JavaScript? Si esto es algo relacionado con el estilo, debería considerar usar comentarios condicionales como los sugeridos.Si esto es algo de JavaScript, debería leer acerca de la detección de características, que supera al rastreo de navegador de muchas maneras. – jwueller

Respuesta

9

Se podría utilizar un comentario condicional IE para agregar la clase a través de JavaScript, algo como esto:

<!--[if IE 7]> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#system').addClass('ie7'); 
}); 
</script> 
<![endif]--> 
+2

Aha! Gracias. Tonto de mí. – shin

9

Usted puede hacerlo sólo con 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> 

Esto crea el div con la clase ie7 si se ejecuta en Internet Explorer 7. El resto del navegador y IE> 7 simplemente crearían ese div sin la clase.

+0

Creo que él quiere una solución jQuery. Sin embargo, su solución es una mejor forma de hacerlo ya que un usuario podría tener javascript deshabilitado. –

+3

+1. Normalmente hago esto en un lugar, en '', y uso un selector de contención CSS como 'body.ie7 # system', para evitar tener que repetir los comentarios condicionales en todo el documento. – bobince

3

Prueba esto:

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

si realmente quiere sølv e esto mediante el uso de JavaScript es posible que desee comprobar la versión de esta manera:

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

+1 para una solución que no depende de las opciones disponibles de un marco de JavaScript, o comentarios condicionales. – blackhawk

9

Para detectar IE7 sólo tiene que utilizar

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

Para hacer lo que quiera con él solo:

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

¿Quiere decir <8? – shin

+0

sí, lo siento, quise decir <8 –

+13

En este momento (2 años después), '.browser' ha sido eliminado de jQuery. – Brad

0

Tenga en cuenta que IE8 compat view también tendrá <!--[if IE 7 ]> como verdadero

Así que debe hacer un segundo nivel l prueba en el modo documento, si no desea que los cambios se reflejen en la vista de compatibilidad IE8.

<!--[if IE 7]> 
    <script type="text/javascript"> 
    try 
    { 
    if(document.documentMode!=8){ 
    //Your code comes here 
    } 
    } 
    catch(exception){ 
    } 
    </script> 
<!--<![endif]--> 
Cuestiones relacionadas