2010-09-08 9 views
14

C'è un modo per rilevare IE7?Come rilevare IE7 con javascript o jquery e aggiungere una classe al div

Non ho alcun problema con i miei codici in IE8, ma ho un problema con IE7.

Quindi quello che ho pensato è che posso aggiungere una classe con jquery quando un browser è IE7 rilevandolo da javascript.

voglio cambiare da

<div id="system"> 

a

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

Grazie in anticipo.

+2

Questo problema è correlato agli stili o JavaScript? Se si tratta di una cosa legata allo stile, dovresti considerare l'uso di commenti condizionali come suggerito.Se si tratta di una cosa JavaScript, dovresti leggere sul rilevamento delle funzionalità, che sconfigge lo sniffing del browser in molti modi. – jwueller

risposta

9

Si potrebbe utilizzare un commento condizionale IE per aggiungere la classe tramite javascript, qualcosa di simile:

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

Aha! Grazie. Silly me. – shin

9

si può fare solo 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> 

Questo creacon la classe ie7 se eseguito in Internet Explorer 7. Tutti gli altri browser e IE> 7 creerebbero appena quel div senza la classe.

+0

Penso che voglia una soluzione jQuery. Tuttavia, la tua soluzione è un modo migliore per andare dal momento che un utente potrebbe avere javascript disabilitato. –

+3

+1. Solitamente lo faccio in un posto, su '', e uso un selettore di contenimento CSS come 'body.ie7 # system', per evitare di dover ripetere i commenti condizionali in tutto il documento. – bobince

3

Prova questo:

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

se si vuole veramente solv e questo utilizzando javascript si potrebbe desiderare di controllare la versione in questo modo:

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

+1 per una soluzione che non dipende dalle opzioni disponibili di un framework javascript o dai commenti condizionali. – blackhawk

9

Per rilevare IE7 basta usare

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

Per fare quello che vuoi con esso solo:

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

Intendi <8? – shin

+0

sì, scusate volevo dire <8 –

+13

In questo momento (2 anni dopo), '.browser' è stato rimosso da jQuery. – Brad

0

Si noti che IE8 compat view avrà anche <!--[if IE 7 ]> come vero

Quindi si dovrebbe fare una seconda leve l test sulla modalità documento, se non si desidera che le modifiche si riflettano nella vista Compatibilità IE8.

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