2009-02-19 11 views
44

Soy nuevo en jquery y me preguntaba: ¿es una forma simple de detectar si un navegador es Internet Explorer 6 o inferior?Detectar Internet Explorer 6 o inferior en jQuery

+0

$ .browser ya no se utiliza. Consulte http://stackoverflow.com/questions/1944169/detecting-ie-using-jquery más detalles –

Respuesta

101

Tan simple como esto:

if($.browser.msie && $.browser.version=="6.0") alert("Im the annoying IE6"); 

actualización

Tenga en cuenta que es $.browserremoved from jQuery 1.9

Si usted todavía tiene que utilizar $ .browser en jQuery 1.9 (o otras funciones obsoletas), pruebe jQuery-migrate (https://github.com/jquery/jquery-migrate/ - http://code.jquery.com/jquery-migrate-1.2.1.js)

+2

Para detectar una versión específica de Internet Explorer solamente, el enfoque de Aamir es casi perfecto en mi opinión. Sin embargo, creo que debes probar el valor de $ .browser.version como un entero , no como una cadena. Luego puedes hacer cosas más interesantes, como aplicar enlaces en la carga de documentos para corregir errores comunes en IE7 e IE6 simultáneamente (por ejemplo). Pero escribo solo desde el punto de vista explícito que solo me importa aproximadamente 1) Microsoft Internet Explorer, y 2) qué versión es si se detecta. Obsoleto o no, consultar $ .browser y $ .browser.version fue el enfoque más directo para mí. – markedup

+3

Otra forma puede ser: ($ .browser.msie && /6.0/.test(navigator.userAgent)) –

+19

... hasta que lleguen a la versión de IE 16.0, o 8.6.0, etc. – nickf

16

jQuery comprueba las características, en lugar de "navegadores". Dicho esto, puede usar el método jQuery.support para detectar qué es capaz el navegador de los usuarios.

métodos obsoletos (no utilizar)

  • $ .browser
  • $ browser.version
  • $ .boxModel

http://docs.jquery.com/Utilities/jQuery.support le dará un resumen de las funciones que están compatible con los navegadores. Tomando esa información, desarrollará un par de verificaciones condicionales para determinar si el navegador que se está utilizando es su navegador de destino o no.

+7

Esto es relevante si el usuario desea detectar esa funcionalidad, pero no hay un método jQuery.support para verificar: "el navegador agregar valores hash al historial del navegador "o similar, por lo que es más apropiado detectar la versión del navegador en lugar de" ¿admite .cssFloat y .htmlSerialized? – ebynum

0

http://docs.jquery.com/Utilities/jQuery.browser.version es como

EDITADO: Corregido enlace de Douglas

http://api.jquery.com/jQuery.browser/#jQuery.browser.version

Es decir, si usted tenía la vieja versión no la última ... 1.3

Además, Otro buen punto es que con JQuery, no debes preocuparte por la versión. JQuery ofrece pruebas de características y maneja todo eso malarky para usted. Preocuparse acerca de las versiones y plataformas es bastante 1999

+0

$ .browser está en desuso. – Sampson

+21

Las empresas aún requieren soporte para IE6 y usted a menudo tienen que hacer cosas específicamente para eso. Estoy bastante desconcertado de que .browser se elimine, eso es simplemente estúpido. – alex

+0

Alex, estoy contigo en eso. Fuera del tema, me acabo de dar cuenta de que eres el creador de SyntaxHighlighter Buen trabajo, lo uso en mi sitio personal. – Ron

0

Trate de hacer esto:

jQuery.each(jQuery.browser, function(i, val) { 
    $("<div>" + i + " : <span>" + val + "</span>") 
      .appendTo(document.body); 
}); 

si necesita más información consulte la siguiente:

http://docs.jquery.com/Utilities/jQuery.browser

6

muy buena manera de detectar IE es:

if ('v'=='\v') { 
    welcome to IE)) 
} 

Desafortunadamente no puede reconocer su versión pero no siempre es nessecary.

+0

Bueno uno. Lástima que no funciona en IE9 :( – Robert

50

También puede solicitar IE directamente.

<!--[if lte IE 6]> 
<script type="text/javascript"> 
    var isRunningIE6OrBelow = true; 
</script> 
<![endif]--> 
3

Además, otro buen punto es que con JQuery, no debe preocuparse por la versión.

Eso no ayuda si está usando jquery para arreglar un error de renderizado IE6 css.

0

"Si bien es poco probable jQuery.browser será eliminada, debe hacerse todo lo posible por utilizar jQuery.support y adecuada detección de características ."

Así que digo adelante y úselo. Deben mantener compatibilidad hacia atrás con scripts que aún usan el método de detección de agente de usuario.

3

A menudo compruebo la versión de un navegador. El método .support es genial, pero realmente no ayuda cuando necesita ocultar selecciones cuando hay una superposición. No hay "selecciones de soporte son controles de ventana". Solo necesita comprobar la versión del navegador, por lo que diría que se equivoque hacia el método .support donde pueda, y use el .browser cuando sea necesario.

+0

De todo corazón estoy de acuerdo. Muchas personas gritan las alabanzas de '$ .support', pero nunca * nunca * lo he encontrado útil. Está diseñado solo para uso interno y de complementos, IMO. – nickf

1

sólo para que la gente sepa $ browser.msie & & /6.0/.test(navigator.userAgent) no es fiable, he llegado a esta pregunta en busca de una respuesta a un problema con el bgiframe jQuery que se rompe en mi máquina porque tengo 'Media Center PC 6.0' en mi cadena navigator.userAgent. Ahora edité la fuente para usar la prueba $ browser.version.

Es tonto de JQuery desaprobar estas pruebas de navegador porque, por feas que sean, son necesarias para lidiar con el feo estado del ecosistema del navegador.

8
if ($.browser.msie && parseInt($.browser.version, 10) <= 6) { 
    alert("I'm not dead yet!"); 
} 

- Actualización

favor, no que $.browser es removed from jQuery 1.9

5

Si ActiveXObject existe y XMLHttpRequest no lo hace, es IE6:

/* IE6 Check */ 
(!!window.ActiveXObject && !window.XMLHttpRequest) ? true : false; 

En Internet Explorer 7, sería:

(!!window.ActiveXObject && !!window.XMLHttpRequest) ? true: false; 

Referencias

Cuestiones relacionadas