2010-07-19 14 views
6

Estoy intentando utilizarnavegador con jQuery

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

Pero no parece funcionar? Qué estoy haciendo mal ?

Thx

Editar: Use los comentarios condicionales

+4

¿Qué estás tratando de verificar? Debe usar la detección de características en lugar de la detección del navegador si es posible. –

+0

la práctica estándar sería probar las capacidades específicas en lugar del comportamiento del navegador. ¿Qué estás tratando de lograr exactamente? – jasonpgignac

+0

Hola, nick - ¿Sí, en este caso necesito verificar los navegadores que no sean IE7? así que esta era la forma más sencilla de hacerlo [aunque estaba depreciado] – Tom

Respuesta

7

jQuery.browser.version es lo que estás buscando. Y probablemente debería parseFloat.

En general, se considera que depender de la detección del navegador a menos que no haya absolutamente ninguna forma de detectar las características. Podría ayudarnos decirnos cuál es su problema real.

EDITAR: Debe utilizar los comentarios condicionales para servir reglas/hojas de estilo para IE7 y siguientes.

+0

Estoy tratando de hacer - si el elemento # está SOLAMENTE en IE7, entonces deje el CSS como visualización: ninguno; - De lo contrario, en cualquier otro navegador cambiarlo. Este es el porque el CSS se procesa primero y el control deslizante en el que lo estoy usando es demasiado lento para confiar en JS. – Tom

+0

Puede usar sentencias condicionales CSS e IE (no JS). –

+0

sí, pero preferiría no usar declaraciones condicionales ya que a la velocidad de publicación de Google no le gusta eso. – Tom

3

Esto parece funcionar de mi prueba limitada:

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.) 
    } 
}); 
+0

hey thx. pero esto no funcionará solo si MSIE - es decir, está probando MSIE y luego hace cosas. Necesito todos los demás navegadores, pero <8? – Tom

+0

@Tom No estoy seguro de lo que estás tratando de hacer, así que modifiqué mi código para mostrar dónde poner el código para cada situación que estés tratando de resolver. – Adam

3

Esto no responde a su pregunta específica, pero me gustaría proponer una metodología mucho más simple. Use los comentarios condicionales de IE para aplicar una ID específica a su etiqueta corporal. Por ejemplo:

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

entonces se vuelve bastante trivial para detectarlo a través de jQuery:

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

que puedes usar comentarios condicionales para esto, más rápido, más fácil, más corto, como este:

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

Esto ocultará el elemento en IE7 y abajo. No necesita ninguna secuencia de comandos para ir junto con esto, simplemente elimine el display: none que actualmente tiene oculto inicialmente de su hoja de estilo original (o en línea).

Para los comentarios sobre Google Pagespeed no me gusta esto ... ignóralo, si tienes que arreglar un error de IE7, arréglalo de la manera correcta. Esto es más rápido y más simple ... si Pagespeed pudo verificar que está usando el agente de usuario para hacer esto (que jQuery.browser) lo recomendaría, no tiene un mecanismo para decirle que es un peor enfoque.

0
jQuery.browser.msie 

vuelve verdadera o falsa

jQuery.browser.version 

es la de comprobar browserVersion.

0

Puede usar el jQuery Browser Plugin. Le da un objeto javascript que contiene toda la información sobre el navegador que se está utilizando.
Por ejemplo:

  • browser.name: El nombre del navegador que se utiliza.
    alert($.browser.name); // this will alert 'firefox'
  • browser.versionNumber``: La versión del navegador (nota: como un número entero).
    alert($.browser.versionNumber); // this will alert '30'

Yo he encontrado que sea muy simple de usar. La versión minimizada es solo 1.44KB. Por favor, consulte el enlace.

Cuestiones relacionadas