ver saber obtener navegador internet identificar detectar datos como jquery jquery-2.0

saber - Detección de navegadores que no son compatibles con jQuery(2)



saber navegador js (2)

Perdóneme si hay una respuesta obvia a esta pregunta, pero no he podido encontrarla. Estoy considerando cambiar a jQuery 2 y, aunque no estoy preocupado por la compatibilidad con navegadores antiguos, me gustaría poder decirles a los usuarios con navegadores no compatibles que no pueden usar el sitio.

Veo aquí ( http://blog.jquery.com/2013/03/01/jquery-2-0-beta-2-released/ ) que puede usar comentarios condicionales para ramificar archivos .js en diferentes versiones de IE, pero creo que jQuery 2.0 también incluye compatibilidad con otros navegadores, no solo con IE, por lo que no creo que lo haga solo [ editar: esto es incorrecto, consulte la edición más grande a continuación].

En un mundo ideal, cambiaría a jQuery 2 y luego tendría una función javascript única que se llama cuando jQuery me dice que no es compatible con el navegador. ¿Hay una forma sencilla de hacer esto que me estoy perdiendo?

Gracias.

EDITAR:

Me encontré con esta publicación ( http://bugs.jquery.com/ticket/13404 ) que me dirigió aquí: http://jquery.com/browser-support/ . Resulta que, en términos de soporte, jQuery 2 solo difiere de jQuery 1.9 en los navegadores IE. Por consiguiente, quizás una mejor pregunta es cómo detectar los navegadores que no son compatibles con jQuery (en general, no solo la versión 2). He actualizado el título de la pregunta.

EDIT2:

Como la detección de características es el enfoque más recomendado para este problema, el método de soporte de jQuery parece relevante aquí ( http://api.jquery.com/jQuery.support/ ). Sin embargo, también parece bastante dudoso confiar (ya que puede cambiar sin aviso).

Supongo que esto crea la pregunta clave. ¿Cómo se supone que debo tener alguna idea de qué características de jQuery están o no están sujetas a la no compatibilidad de los navegadores antiguos? Por ejemplo, si alguien llega al sitio con una copia de Firefox de 4 versiones anteriores, no tendría idea de qué características necesitaría probar. Sería correcto si jQuery pudiera ofrecer algún tipo de prueba de características totalmente compatible, como esta para HTML5: http://html5test.com/

EDIT3:

Bien, entonces con las declaraciones de inclusión condicionales (resaltadas en las respuestas a continuación, y en el sitio de jQuery), puedes lidiar con versiones antiguas de IE. Sin embargo, para otros navegadores, es un poco complicado. Como no puede confiar en jQuery para decirle nada sobre el soporte del navegador para las funciones x, y, o z, mi enfoque es simplemente consultar el javascript subyacente. Si desea consultar el soporte basado en CSS, puede usar modernizr. Para el soporte basado en javascript, este es el método que utilizo para detectar SUPER versiones antiguas de otros navegadores:

function browser_ok() { if ( ( !Array.prototype.indexOf ) || ( !Array.prototype.forEach ) || ( !String.prototype.indexOf ) || ( !String.prototype.trim ) || ( !Function.prototype.bind ) || ( !Object.keys ) || ( !Object.create ) || ( !JSON ) || ( !JSON.stringify ) || ( !JSON.stringify.length ) || ( JSON.stringify.length < 3 ) ) { return false; } // # local storage support // source: http://diveintohtml5.info/storage.html try { var local_storage_support = ( ''localStorage'' in window && window[''localStorage''] !== null ); if ( !local_storage_support ) { throw new Error("local_storage_support: failed"); } } catch ( e ) { return false; } // # AJAX uploads if ( !window.FormData || !window.FileReader ) { return false; } // # HTML data elements var body = $("body"); body.data("browser_support_test",42); if ( body.data("browser_support_test") !== 42 ) { return false; } else { body.removeData("browser_support_test"); } return true; }

AFAICT, esta función debería eliminar todos los navegadores que podrían causar problemas a jQuery por su funcionalidad básica. Si desea hacer algo sofisticado, entonces es probable que haya una pieza específica de funcionalidad que sepa que necesita, para que pueda verificarla específicamente.


Parece que solo deja caer el soporte para IE 6, 7 y 8; deberías poder usar:

HTML:

<!--[if lt IE 9]> <html data-browser="lt-ie9"> <![endif]--> <!--[if gt IE 8]><!--> <html> <!--<![endif]-->

JS:

if( document.documentElement.getAttribute(''data-browser'') !== null ){ // not supported by jQuery 2.x }

Si decide admitir navegadores más antiguos pero aún desea las mejoras que el equipo de jQuery ha incluido en 2.x, puede usar la versión 1.x: http://jquery.com/download/

Actualizar:

Es difícil / impráctico detectar todos los navegadores que no admiten jQuery, la razón es que jQuery es solo una biblioteca de javascript.

Los diferentes navegadores y versiones utilizados para usar diferentes métodos para hacer algunas cosas básicas en javascript (como ajax), esto significa que algunos navegadores antiguos admitirán algunas características y no admitirán otras. No hay una explicación clara de que este navegador sea compatible con todas las funciones o que este navegador no admita ninguna prueba de características .

La sugerencia de Rob W es realmente buena, sirve la nueva versión (2.x) para los navegadores modernos y la versión 1.x (con soporte heredado) para los navegadores antiguos.

Eche un vistazo a este artículo: degradación elegante frente a mejora progresiva y considere usar la biblioteca Modernizr . Esto le permite verificar qué funciones admite el navegador del usuario y le permite escribir sus aplicaciones para aprovechar al máximo los últimos avances, a la vez que brinda una buena experiencia para los usuarios de navegadores más antiguos.


Una forma de obtener los beneficios de jQuery 2.0 mientras se admite IE 6, 7 y 8, es usar comentarios condicionales:

<!--[if lt IE 9]><script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script><![endif]--> <!--[if IE 9]><!--><script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script><!--<![endif]--> <script>window.jQuery||document.write(''<script src="jquery.js"><//script>'');</script>

  • El primer comentario condicional asegura que jQuery 1.x se carga para IE <9.
  • La última versión de jQuery (2.0.3) se usa en IE 9 y en los navegadores donde no se reconocen los comentarios condicionales (IE 10 eliminó la compatibilidad con los comentarios condicionales).
  • Cuando jQuery no puede cargarse desde el CDN, se carga una reserva ( jquery.js , alojada en su servidor).