Foros del Web » Programando para Internet » Javascript »

Duda sobre como detectar navegador y versión

Estas en el tema de Duda sobre como detectar navegador y versión en el foro de Javascript en Foros del Web. Hola muy buenas gentes. ¿Cómo estamos? Yo dando la lata preguntando, como siempre, jeje. Bueno, ante todo muchas gracias por toda la ayuda que me ...
  #1 (permalink)  
Antiguo 24/03/2012, 03:03
 
Fecha de Ingreso: agosto-2007
Mensajes: 32
Antigüedad: 16 años, 8 meses
Puntos: 1
Duda sobre como detectar navegador y versión

Hola muy buenas gentes. ¿Cómo estamos? Yo dando la lata preguntando, como siempre, jeje. Bueno, ante todo muchas gracias por toda la ayuda que me habéis ofrecido hasta el momento, sea de forma directa respondiendo a un POST o sea de forma indirecta encontrando información sobre algo, muy común en Google, jeje.

Bueno, la cosa es que me he planteado una duda, y es como saber como detectar de manera fiderigna un navegador y su versión de forma directa, nada de condicionales que representen una exclusividad de dicha versión y navegador pues estube mirando que muchos cambios que se hicieron en Javascript acordes a cada navegador y versión pueden ser modificados futuramente dando lugar a error a la hora de verificar por este método, que auqnue ésto, no le quita ningún mérito, jeje.

El caso es que tenemos 5 maneras de detectar componentes que se refieren al navegador y al Sistema Operativo, que son:

Código Javascript:
Ver original
  1. with(navigator){
  2.     var navegador=new Array(
  3.         appName,
  4.         appCodeName,
  5.         appVersion,
  6.         platform,
  7.         userAgent
  8.     );
  9. };

Estos parámetros los he probado en 3 navegadores: Internet Explorer 8, Chrome 17 y FireFox 11. El caso es que sabría más o menos como sacarle la versión real y tal en base a userAgent, pero hay un problema, que no sé si en otras versiones o navegadores me aparecería así, además. ¿Cómo diferencias Safari de Chrome? En fin, es una atada, jeje. Os pongo los ejemplos obtenidos:

Código:
Internet Explorer 8

appName: Microsoft Internet Explorer

appCodeName: Mozilla

appVersion: 4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS129264)

platform: Win32

userAgent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS129264)
Código:
FireFox 11


appName: Netscape

appCodeName: Mozilla

appVersion: 5.0 (Windows)

platform: Win32

userAgent: Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0
Código:
Chrome 17

appName: Netscape

appCodeName: Mozilla

appVersion: 5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11

platform: Win32

userAgent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
Creo que se obtubiera esta misma información del resto de navegadores, es decir, la resultante a dichos parámetros de "navigator" del resto de navegadores y versiones me imagino que daría una posible garantía de obtener navegador y versión.

Muchas gracias por leerme este ladrillo y un saludo.
  #2 (permalink)  
Antiguo 24/03/2012, 04:15
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Duda sobre como detectar navegador y versión

Para qué necesitás detectar al navegador? Es algo que ya no se usa. Lo que se hace es detectar si el navegador posee la funcionalidad y, en caso negativo, ofrecer una alternativa. Y eso se hace con el fin de evitar un problema que vos mencionás de cierta manera: si en el futuro el navegador evoluciona y acepta dicha funcionalidad, tu código la incorporará automáticamente en lugar de descartarla como harías si sólo detectás al navegador en lugar de la funcionalidad. Un ejemplo:
Viejas versiones de Explorer no soportaban canvas cuando otros navegadores sí lo hacían. Si hubieras hecho algo así, las nuevas versiones de Explorer dirían que tu navegador no soporta canvas, lo cual no sería cierto si estás usando explorer 9:
Código PHP:
if (window.ActiveXObject){
    
alert('tu navegador no soporta canvas');
    return;
}else{
   var 
context canvas.getContext("2d");
  
//... 

En cambio, si hubieras hecho algo así, las cosa hubiera sido diferente:
Código PHP:
if (document.createElement("canvas").getContext) { 
   var 
context canvas.getContext("2d"); 
  
//...
}else{
    
alert('tu navegador no soporta canvas');

  #3 (permalink)  
Antiguo 24/03/2012, 07:23
 
Fecha de Ingreso: agosto-2007
Mensajes: 32
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Duda sobre como detectar navegador y versión

Ante todo muchas gracias por responderme tan rápido Panino5001. Bueno, el caso es que necesitaba la detección no solo del navegador si no de su versión pues sí es cierto que se puede condicionar el uso de un elemento a relación de si existe o no, tal como describes o incluso con try, que en caso contrario, ofertar una alternativa, pero hay alternativas que ciertos navegadores no poseen, o incluso, se estructuran de forma diferente, que es también, otra manera de detectar el navegador. La verdad, tienes mucha razón en ello, pero por otro lado, ya no es la primera vez que me pasa que una cosa no compatibiliza la otra y como no llene el código de if() y try malo, entonces, ofertar alternativas acordes al navegador y versión.

De todas maneras, muchas gracias por la alternativa ofrecida, que es la que estoy usando actualmente, jeje. ¡Un saludo!
  #4 (permalink)  
Antiguo 24/03/2012, 09:41
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años
Puntos: 19
Respuesta: Duda sobre como detectar navegador y versión

Quizás te interese la librería Modernizr, pensada especialmente para acabar con el userAgent sniffing , que detecta el soporte de cada funcionalidad en el navegador y te ofrece clases en CSS y soporte desde javascript para comprobar si el navegador tiene la funcionalidad que necesitas.
  #5 (permalink)  
Antiguo 24/03/2012, 16:00
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Duda sobre como detectar navegador y versión

En realidad hay numerosas circunstancias en las que necesitamos saber navegador y versión.
Yo al menos lo resuelvo con php utilizando esto
http://foros.emprear.com//deteccion-browser
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 24/03/2012, 17:02
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Duda sobre como detectar navegador y versión

Cita:
Iniciado por emprear Ver Mensaje
En realidad hay numerosas circunstancias en las que necesitamos saber navegador y versión.
Yo al menos lo resuelvo con php utilizando esto
http://foros.emprear.com//deteccion-browser
Saludos
¿Cuáles? La verdad es que no puedo pensar en ninguna. Lo más cercano que se me ocurre es la derivación a la versión mobile de un sitio (no entraré en polémicas acerca de si eso debería o no ser necesario) y ni siquiera para eso la versión es necesaria.
  #7 (permalink)  
Antiguo 24/03/2012, 17:25
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Duda sobre como detectar navegador y versión

Cita:
Iniciado por Panino5001 Ver Mensaje
¿Cuáles? La verdad es que no puedo pensar en ninguna. Lo más cercano que se me ocurre es la derivación a la versión mobile de un sitio (no entraré en polémicas acerca de si eso debería o no ser necesario) y ni siquiera para eso la versión es necesaria.
Al tema javascript (eliminemos el hecho de que pueda estar desactivado), podés sumarle css (hay ajustes muy finos dentro del grupo de los NO IE), los cuales se pueden hacer dinámicos, hace unos días nomás tenía que hacer una web accesible por teclado, y el uso de accesskey es completamente diferente de un navegador a otro y hay que mostrar su uso segun cada navegador
Me pasaron películas .mov, tenían que ir si o si con quicktime. pero en IE64 el plugin de quicktime tiene un problema con los controles, por lo que hay que hacer unos ajustes. Hasta hace no mucho el plugin de flash para IE64 no existía hasta que apareció una beta que había que bajarla manualmente. Si me pongo a buscar, seguramente encuentro otras situaciones con las que me encontré en la necesidad de detectar navegador y versión.
Supongo que en definitiva cualquier solución que "funcione" es viable, pero esta me dá buenos resultados teniendo en cuenta lo previo.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 24/03/2012, 17:28
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 187
Respuesta: Duda sobre como detectar navegador y versión

Sinceramente la única situación en la que utilizo la técnica de detección de browser es para detectar IE 6 a 8 para aplicar parches CSS y Javascript.
Además la técnica que utilizo son los comentarios condicionales que son 100% efectivas, ya que los únicos navegadores que las interpretan son los browsers objetivos.
  #9 (permalink)  
Antiguo 24/03/2012, 17:50
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Duda sobre como detectar navegador y versión

Volviendo al tema javascript (lo de css lo entiendo pero no lo comparto porque soy partidario de la degradación elegante), de verdad les parece una buena técnica el browsser sniffing? Yo no sólo la considero una mala práctica por lo que ya argumenté sino porque además creo que hacerlo bien es imposible. Todos los días salen navegadores nuevos para nuevos dispositivos y la verdad es que no me imagino a nadie testeando todos y actualizando su javascript en consecuencia. Y hacerlo para 10/20 versiones de navegador/dispositivos que hoy son los más usados y mañana quién sabe... ¿tiene sentido?
  #10 (permalink)  
Antiguo 24/03/2012, 18:26
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Duda sobre como detectar navegador y versión

Yo hablo del presente, y para IE , Opera , Chrome, FF y Safari, que es lo que testeo, me sirve.
Para móviles (siempre y cuando la web necesite una versión para estos)uso algo diferente.
El futuro, bueno, vos mismo lo señalas, mañana, quien sabe...
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 24/03/2012, 19:37
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años
Puntos: 19
Respuesta: Duda sobre como detectar navegador y versión

Por eso precisamente es una mala práctica, porque no es adaptable al futuro. De hecho, no hay más que ver el lío que es hoy en día el userAgent debido al uso de esta práctica en el pasado.
  #12 (permalink)  
Antiguo 24/03/2012, 19:43
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Duda sobre como detectar navegador y versión

Será una mala práctica para vos que no le sabés sacar provecho.
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 24/03/2012, 20:03
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años
Puntos: 19
Respuesta: Duda sobre como detectar navegador y versión

No es algo que diga yo porque a mí me lo parece, es el consenso general.

5 Reasons Why Browser Sniffing Stinks
UA sniffing has historically been a bad practice in the world wide web
Why is browser sniffing not a recommended practice?
(MDN) When considering the detection of the browser using the user agent, the first step is to try to avoid it.

Pero claro, cada uno que haga lo que crea conveniente. Solo ofrezco la información.
  #14 (permalink)  
Antiguo 24/03/2012, 20:11
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Duda sobre como detectar navegador y versión

También es interesante la opinión de un referente: http://douglascrockford.sys-con.com/node/518877
  #15 (permalink)  
Antiguo 24/03/2012, 20:53
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 2 meses
Puntos: 57
Información Respuesta: Duda sobre como detectar navegador y versión

Hola miglug, que tal.
No pongo a discución los conocimientos de nadie.
Panino5001 tiene mucha razón y creo que su experiencia lo avala.

emprear si quieres hablar del presente, pues "hoy", quien no mira hacia adelante atrás se queda. Y creo que muchos estarían de acuerdo.
No es necesario verificar cada versión en particular y ofrecer a cada uno su respectiva solución; ya Panino5001 lo ha dicho bien claro.

Cita:
Todos los días salen navegadores nuevos para nuevos dispositivos y la verdad es que no me imagino a nadie testeando todos y actualizando su javascript en consecuencia.
Ahora bien, si una web ofrece contenido que tendrá problemas para ser visualizado o usado en algunos navegadores la solución es simplemente "detectar si el navegador posee la funcionalidad y, en caso negativo, ofrecer una alternativa" como bien dijo Panino5001 y como bien conoce miglug. Las alternativas podrían ser muchas incluso ofrecer al usuario la actualización de su navegador o proponerle uno distinto y brindarle la ayuda necesaria.

Si nosotros como desarrolladores no ofrecemos al usuario las facilidades de actualizarse o usar lo ultimo para disfrutar de lo ultimo, no estaríamos contribuyendo al aprendizaje.

Todos tienen sus propias razones de trabajar como mejor les parezca, pero creo que también hay puntos que se deben tener muy claros, usarlos y no solo trabajar para el presente sino también con miras al futuro. Es mi punto de vista, mi criterio y mi opinión.

En cuanto a la solución que te puedo ofrecer miglug, es que uses Modernizr. Incluso su propia web es un claro ejemplo de todos las alternativas que se pueden ofrecer al acceder desde distintos navegadores no tan actuales.
  #16 (permalink)  
Antiguo 24/03/2012, 20:56
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 2 meses
Puntos: 57
De acuerdo Respuesta: Duda sobre como detectar navegador y versión

Cita:
Iniciado por Panino5001 Ver Mensaje
También es interesante la opinión de un referente: http://douglascrockford.sys-con.com/node/518877
Otra gran opinión a considerar !!!
  #17 (permalink)  
Antiguo 25/03/2012, 00:39
Avatar de zo0r  
Fecha de Ingreso: enero-2012
Ubicación: Miami, Florida.
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Duda sobre como detectar navegador y versión

Buenas, creo que nos estamos olvidando que hay browsers que soportan X característica y no la implementa como debe ser(véase IE6/7/8, Opera) y he allí el porque detectar una versión o browser específico es imprecindible.
  #18 (permalink)  
Antiguo 26/03/2012, 03:05
 
Fecha de Ingreso: agosto-2007
Mensajes: 32
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Duda sobre como detectar navegador y versión

¡Hola muy buenas gentes! ¿Que tal? Ante todo, muchísimas gracias por esta gran colaboración de opiniones, desde luego nunca nunca he tenido tanta ayuda con un tema (Vaya paridas debo de postear a veces, jeje, lo malo de ser todo un Noob). Muchísimas gracias por tu opinión y mostrar tu forma de hacerlo en base a condicionales Panino5001; también a emprear y gebremswar por sus opciones correspondientes detection-browser y Modernizr y su opinión y valoración; la situación de uso de ryugen para su trabajo; la valoración demostrada de Shirakz, valoración que apoya completamente a Panino5001; y la consigna del post de zo0r. Muchas gracias a todos pues te hacen reflexionar todas las opciones.

Mis reflexiones personales son las siguientes:

Conforme al tiempo, vivimos en el Presente, que es una sucesión de pasados recordados; el pasado es en realidad el presente que vivimos hoy; y el futuro para mi no existe, pues si así fuera, podríamos estimar un mínimo sobre él de forma verídica, pero... ¿Quién medirá si de mayor cobraré pensión? ¿O si llegaré a dicha situación? Jeje. Para mi el futuro se irá haciendo con el Presente, y con ello a base de una sucesión de Pasados. El problema que veo plateado mayoritariamente con ello es por ejemplo, la normalización de los SVG, archivos de imagen dinámica programada que evitan el uso de JavaScritp y CSS para la generación de formas y demás, y que si biscáis información sobre tales, son compatibles 100% con los navegadores más modernos, pero claro, aun lo considero primitivo, pues si miráis la web de w3school os encontrareis que el 40% de los que visitan dicha Web lo hacen desde IE con un porcentaje muy alto de IE6, todo un reto para los programadores o al menos para mi, jeje. Lo que yo creo que este tema se refiere es sobre las nuevas tecnologías, y sí, son todo un problema porque NO hay ninguna estandarización, nada vale para nada más que para una sola cosa. ¿Por qué existe un CSS estandarizado que no usa nadie?

IE ya es en sí, todo un problema, siempre hay que buscarle alternativas a todo, además, si quieres hacer un dinamismo en IE, a parte de que te comerá todos los recursos del procesador, tienes que hacerlo con un setInterval cada 2 milisegundos, sino, se te desequilibra del tiempo real, además, el Zoom y estos comandos básicos de CSS3 no le valen, y cuando encuentras una alternativa, solo te valen para los objetos no dinámicos y que sean gráficos, nada de texto ni nada por el estilo, y que estén correlacionados entre sí. Eso más que un lenguaje de programación, para mi, es una chapuza, jeje. No nos envenenemos más con el tema, jeje.

Desde luego, el uso de archivos JS o CSS prediseñados y aportados a la Web de forma externa no me interesa, siempre hacen aumentar la tasa de espera del usuario, aunque sea de una manera mínima, además, ves los pros, pero no los contras, y además aun, es que lo bonito de la programación es hacerlo uno mismo, tal como es el dibujo o el FreeStyle (Por suerte, tengo la programación como ocio, no lo digo por mal ni mal meter, que todo tiene su mérito y muy reconocible, entre otras más importantes, la experiencia que tenéis todos vosotros ).

Finalmente, una conclusión final, creo que lo mejor es hacer como dice panino5001, condicionar una posibilidad, pero claro, también quería condicionar en una opción que no diga ni actualizar ni nada, pues tengo una experiencia curiosa y de la cual, en mi entorno no digital me dan la razón, y es que al usuario hay que ponerlo no como un inútil, pero sí como una persona totalmente ignorante de la informática, y no en el mal sentido, sino en el sentido de que salvo a quienes les guste y demás, el resto no se matan a averiguar como funciona y les resulta muy complejo dicho mundo. Un ejemplo claro es por ejemplo el SkimBoard, a mi me encanta, pero engancharos una ola, para mi es facilísimo. No sé si me entendéis. Por tanto, para mi la opción de actualizar, auqnue lógica y muy necesaria, querría en la medida de lo posible ponerlo como opción y no como obligación para el usuario, ya sin ir más lejos, por mi madre, que no se aclara y tiene una edad a la que no se quiere complicar la vida y solo buscar "Bandeja de entrada" en el correo le es un mundo por decirlo de alguna manera. Es algo que existe y que veo que nadie nos damos cuenta de ello, siempre es "haz esto", "haz lo otro", "lee esto (34857 páginas) para instalar aquello", etc. Y el método "next next finish" para mi no es una posibilidad.

Como dije antes, muchas gracias por todo gentes y seguiré revisando el foro porque está interesante todos los puntos que se han tocado aquí, a parte de lo que planteé, jeje. Para mi, lo mejor, basándome en lo que dijo Panino5001, es usar el try y catch para generar opciones. ¡Un saludazo para todos!
  #19 (permalink)  
Antiguo 07/05/2012, 02:40
 
Fecha de Ingreso: febrero-2006
Ubicación: vivó en Bogotá, Colombia
Mensajes: 6
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Duda sobre como detectar navegador y versión

Cita:
Iniciado por Panino5001 Ver Mensaje
¿Cuáles? La verdad es que no puedo pensar en ninguna. Lo más cercano que se me ocurre es la derivación a la versión mobile de un sitio (no entraré en polémicas acerca de si eso debería o no ser necesario) y ni siquiera para eso la versión es necesaria.
Si tu quieres guardarte en una base el navegador desde el cuál te visitan y su versión aprovechando javascript si esta activo para que el proceso no se realice en tu servidor. Un script de detección puede servir.

También puede llegar a servir para recomendar a tus visitantes tu navegador preferido, en caso de que este visitando el sitio desde otro navegador. Teniendo en cuenta que a un usuario de Linux de nada le sirve que le recomienden IE.

El SO se puede dectetar por medio de javascript, aprovechando si está activo también se le puede informar a un usuario que XXXX aplicación que está a punto de bajar funciona o no funciona para dicho sistema operativo. (Esto para usuarios novatos).

Me imagino que todo aquello que necesite el dato de navegador, versión o SO. aprovechando si esta activo javascript se puede hacer del lado del cliente para ahorrar recursos de nuestro servidor.

No sé mucho sobre lo nuevo en web, así de que puedo estar equivocado.
  #20 (permalink)  
Antiguo 07/05/2012, 03:26
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 2 meses
Puntos: 57
Información Respuesta: Duda sobre como detectar navegador y versión

Esto es lo que el tema pedía. Pensé que alguien lo pondría en mi ausencia; pero bueno aquí está
Código Javascript:
Ver original
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>@GBreagan</title>
  6. <script type='text/javascript'>
  7. /**
  8.  * Browser properties:
  9.  * -fullName (Opera, Google Chrome, Mozilla Firefox...)
  10.  * -name (opera, chrome, firefox...)
  11.  * -code (op, ch, ff...)
  12.  * -fullVersion (5.0.3.12...)
  13.  * -version (5)
  14.  * -mobile (true, false)
  15.  * -platform (windows 7, Linux, Machintosh...)
  16.  * @author Rbrt
  17.  * @version 2.1.5
  18.  * @returns Browser object
  19.  */
  20. function Browser() {   
  21.     // ---- public properties -----
  22.     this.fullName = 'unknown'; // getName(false);
  23.     this.name = 'unknown'; // getName(true);
  24.     this.code = 'unknown'; // getCodeName(this.name);
  25.     this.fullVersion = 'unknown'; // getVersion(this.name);
  26.     this.version = 'unknown'; // getBasicVersion(this.fullVersion);
  27.     this.mobile = false; // isMobile(navigator.userAgent);
  28.     this.width = screen.width;
  29.     this.height = screen.height;
  30.     this.platform =  'unknown'; //getPlatform(navigator.userAgent);
  31.    
  32.     // ------- init -------    
  33.     this.init = function() { //operative system, is an auxiliary var, for special-cases
  34.         //the first var is the string that will be found in userAgent. the Second var is the common name
  35.         // IMPORTANT NOTE: define new navigators BEFORE firefox, chrome and safari
  36.         var navs = [
  37.             { name:'Opera Mobi', fullName:'Opera Mobile', pre:'Version/' },
  38.             { name:'Opera Mini', fullName:'Opera Mini', pre:'Version/' },
  39.             { name:'Opera', fullName:'Opera', pre:'Version/' },
  40.             { name:'MSIE', fullName:'Microsoft Internet Explorer', pre:'MSIE ' },  
  41.             { name:'BlackBerry', fullName:'BlackBerry Navigator', pre:'/' },
  42.             { name:'BrowserNG', fullName:'Nokia Navigator', pre:'BrowserNG/' },
  43.             { name:'Midori', fullName:'Midori', pre:'Midori/' },
  44.             { name:'Kazehakase', fullName:'Kazehakase', pre:'Kazehakase/' },
  45.             { name:'Chromium', fullName:'Chromium', pre:'Chromium/' },
  46.             { name:'Flock', fullName:'Flock', pre:'Flock/' },
  47.             { name:'Galeon', fullName:'Galeon', pre:'Galeon/' },
  48.             { name:'RockMelt', fullName:'RockMelt', pre:'RockMelt/' },
  49.             { name:'Fennec', fullName:'Fennec', pre:'Fennec/' },
  50.             { name:'Konqueror', fullName:'Konqueror', pre:'Konqueror/' },
  51.             { name:'Arora', fullName:'Arora', pre:'Arora/' },
  52.             { name:'Swiftfox', fullName:'Swiftfox', pre:'Firefox/' },
  53.             { name:'Maxthon', fullName:'Maxthon', pre:'Maxthon/' },
  54.             // { name:'', fullName:'', pre:'' } //add new broswers
  55.             // { name:'', fullName:'', pre:'' }
  56.             { name:'Firefox',fullName:'Mozilla Firefox', pre:'Firefox/' },
  57.             { name:'Chrome', fullName:'Google Chrome', pre:'Chrome/' },
  58.             { name:'Safari', fullName:'Apple Safari', pre:'Version/' }
  59.         ];
  60.    
  61.         var agent = navigator.userAgent, pre;
  62.         //set names
  63.         for (i in navs) {
  64.             if (agent.indexOf(navs[i].name)>-1) {
  65.                 pre = navs[i].pre;
  66.                 this.name = navs[i].name.toLowerCase(); //the code name is always lowercase
  67.                 this.fullName = navs[i].fullName;
  68.                 if (this.name=='msie') this.name = 'iexplorer';
  69.                 if (this.name=='opera mobi') this.name = 'opera';
  70.                 if (this.name=='opera mini') this.name = 'opera';
  71.                 break; //when found it, stops reading
  72.             }
  73.         }//for
  74.        
  75.       //set version
  76.         if ((idx=agent.indexOf(pre))>-1) {
  77.             this.fullVersion = '';
  78.             this.version = '';
  79.             var nDots = 0;
  80.             var len = agent.length;
  81.             var indexVersion = idx + pre.length;
  82.             for (j=indexVersion; j<len; j++) {
  83.                 var n = agent.charCodeAt(j);
  84.                 if ((n>=48 && n<=57) || n==46) { //looking for numbers and dots
  85.                     if (n==46) nDots++;
  86.                     if (nDots<2) this.version += agent.charAt(j);
  87.                     this.fullVersion += agent.charAt(j);
  88.                 }else j=len; //finish sub-cycle
  89.             }//for
  90.             this.version = parseInt(this.version);
  91.         }
  92.        
  93.         // set Mobile
  94.         var mobiles = ['mobi', 'mobile', 'mini', 'iphone', 'ipod', 'ipad', 'android', 'blackberry'];
  95.         for (var i in mobiles) {
  96.             if (agent.toLowerCase().indexOf(mobiles[i])>-1) this.mobile = true;
  97.         }
  98.         if (this.width<700 || this.height<600) this.mobile = true;
  99.        
  100.         // set Platform        
  101.         var plat = navigator.platform;
  102.         if (plat=='Win32' || plat=='Win64') this.platform = 'Windows';
  103.         if (agent.indexOf('NT 5.1') !=-1) this.platform = 'Windows XP';        
  104.         if (agent.indexOf('NT 6') !=-1)  this.platform = 'Windows Vista';
  105.         if (agent.indexOf('NT 6.1') !=-1) this.platform = 'Windows 7';
  106.         if (agent.indexOf('Mac') !=-1) this.platform = 'Macintosh';
  107.         if (agent.indexOf('Linux') !=-1) this.platform = 'Linux';
  108.         if (agent.indexOf('iPhone') !=-1) this.platform = 'iOS iPhone';
  109.         if (agent.indexOf('iPod') !=-1) this.platform = 'iOS iPod';
  110.         if (agent.indexOf('iPad') !=-1) this.platform = 'iOS iPad';
  111.         if (agent.indexOf('Android') !=-1) this.platform = 'Android';
  112.        
  113.         if (this.name!='unknown') {
  114.             this.code = this.name+'';
  115.             if (this.name=='opera') this.code = 'op';
  116.             if (this.name=='firefox') this.code = 'ff';
  117.             if (this.name=='chrome') this.code = 'ch';
  118.             if (this.name=='safari') this.code = 'sf';
  119.             if (this.name=='iexplorer') this.code = 'ie';
  120.             if (this.name=='maxthon') this.code = 'mx';
  121.         }
  122.        
  123.         //manual filter, when is so hard to define the navigator type
  124.         if (this.name=='safari' && (this.platform=='Linux' || this.platform=='Android')) {
  125.             this.name = 'unknown';
  126.             this.fullName = 'unknown';
  127.             this.code = 'unknown';
  128.         }
  129.        
  130.         if (this.name=='unknown') {
  131.             if (agent.toLowerCase().indexOf('webkit')) this.fullName = 'unknown webkit navigator';
  132.         }
  133.        
  134.     };//function
  135.    
  136.     this.init();
  137.  
  138. }//Browser class
  139.  
  140.  
  141.       var brw = new Browser();
  142.       alert('fullName: ' + brw.fullName + '\n' + 'name: ' + brw.name + '\n' + 'fullVersion: ' + brw.fullVersion + '\n' + 'version: ' + brw.version + '\n' + 'platform: ' + brw.platform+ '\n' + 'mobile: ' + brw.mobile+ '\n' + 'resolution: ' + brw.width + 'x' + brw.height);
  143.     </script>
  144.   </head>
  145. </html>

Etiquetas: html, navegador, versiones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:15.