Browser.js es un javascript que sirve para detectar las propiedades del navegador que el cliente utiliza al visitar una página, basta con importar el archivo en el código fuente, y todos los datos del navegador se guardarán en una variable objeto.
Obtiene datos del navegador, la versión, el sistema operativo, la resolución de pantalla, si es dispositivo móvil, y soporta google Chrome, Firefox, Internet Explorer, Safari, Opera, entre otros.
Código :
function Browser() { // ---- public properties ----- this.fullName = 'unknow'; // getName(false); this.name = 'unknow'; // getName(true); this.code = 'unknow'; // getCodeName(this.name); this.fullVersion = 'unknow'; // getVersion(this.name); this.version = 'unknow'; // getBasicVersion(this.fullVersion); this.mobile = false; // isMobile(navigator.userAgent); this.width = screen.width; this.height = screen.height; this.platform = 'unknow'; //getPlatform(navigator.userAgent); // ------- init ------- this.init = function() { //operative system, is an auxiliary var, for special-cases //the first var is the string that will be found in userAgent. the Second var is the common name // IMPORTANT NOTE: define new navigators BEFORE firefox, chrome and safari var navs = [ { name:'Opera Mobi', fullName:'Opera Mobile', pre:'Version/' }, { name:'Opera Mini', fullName:'Opera Mini', pre:'Version/' }, { name:'Opera', fullName:'Opera', pre:'Version/' }, { name:'MSIE', fullName:'Microsoft Internet Explorer', pre:'MSIE ' }, { name:'BlackBerry', fullName:'BlackBerry Navigator', pre:'/' }, { name:'BrowserNG', fullName:'Nokia Navigator', pre:'BrowserNG/' }, { name:'Midori', fullName:'Midori', pre:'Midori/' }, { name:'Kazehakase', fullName:'Kazehakase', pre:'Kazehakase/' }, { name:'Chromium', fullName:'Chromium', pre:'Chromium/' }, { name:'Flock', fullName:'Flock', pre:'Flock/' }, { name:'Galeon', fullName:'Galeon', pre:'Galeon/' }, { name:'RockMelt', fullName:'RockMelt', pre:'RockMelt/' }, { name:'Fennec', fullName:'Fennec', pre:'Fennec/' }, { name:'Konqueror', fullName:'Konqueror', pre:'Konqueror/' }, { name:'Arora', fullName:'Arora', pre:'Arora/' }, { name:'Swiftfox', fullName:'Swiftfox', pre:'Firefox/' }, { name:'Maxthon', fullName:'Maxthon', pre:'Maxthon/' }, // { name:'', fullName:'', pre:'' } //add new broswers // { name:'', fullName:'', pre:'' } { name:'Firefox',fullName:'Mozilla Firefox', pre:'Firefox/' }, { name:'Chrome', fullName:'Google Chrome', pre:'Chrome/' }, { name:'Safari', fullName:'Apple Safari', pre:'Version/' } ]; var agent = navigator.userAgent, pre; //set names for (i in navs) { if (agent.indexOf(navs[i].name)>-1) { pre = navs[i].pre; this.name = navs[i].name.toLowerCase(); //the code name is always lowercase this.fullName = navs[i].fullName; if (this.name=='msie') this.name = 'iexplorer'; if (this.name=='opera mobi') this.name = 'opera'; if (this.name=='opera mini') this.name = 'opera'; break; //when found it, stops reading } }//for //set version if ((idx=agent.indexOf(pre))>-1) { this.fullVersion = ''; this.version = ''; var nDots = 0; var len = agent.length; var indexVersion = idx + pre.length; for (j=indexVersion; j<len; j++) { var n = agent.charCodeAt(j); if ((n>=48 && n<=57) || n==46) { //looking for numbers and dots if (n==46) nDots++; if (nDots<2) this.version += agent.charAt(j); this.fullVersion += agent.charAt(j); }else j=len; //finish sub-cycle }//for this.version = parseInt(this.version); } // set Mobile var mobiles = ['mobi', 'mobile', 'mini', 'iphone', 'ipod', 'ipad', 'android', 'blackberry']; for (var i in mobiles) { if (agent.indexOf(mobiles[i])>-1) this.mobile = true; } if (this.width<700 || this.height<600) this.mobile = true; // set Platform var plat = navigator.platform; if (plat=='Win32' || plat=='Win64') this.platform = 'Windows'; if (agent.indexOf('NT 5.1') !=-1) this.platform = 'Windows XP'; if (agent.indexOf('NT 6') !=-1) this.platform = 'Windows Vista'; if (agent.indexOf('NT 6.1') !=-1) this.platform = 'Windows 7'; if (agent.indexOf('Mac') !=-1) this.platform = 'Macintosh'; if (agent.indexOf('Linux') !=-1) this.platform = 'Linux'; if (agent.indexOf('iPhone') !=-1) this.platform = 'iOS iPhone'; if (agent.indexOf('iPod') !=-1) this.platform = 'iOS iPod'; if (agent.indexOf('iPad') !=-1) this.platform = 'iOS iPad'; if (agent.indexOf('Android') !=-1) this.platform = 'Android'; if (this.name!='unknow') { this.code = this.name+''; if (this.name=='opera') this.code = 'op'; if (this.name=='firefox') this.code = 'ff'; if (this.name=='chrome') this.code = 'ch'; if (this.name=='safari') this.code = 'sf'; if (this.name=='iexplorer') this.code = 'ie'; if (this.name=='maxthon') this.code = 'mx'; } //manual filter, when is so hard to define the navigator type if (this.name=='safari' && this.platform=='Linux') { this.name = 'unknow'; this.fullName = 'unknow'; this.code = 'unknow'; } };//function this.init(); }//Browser class
Implementación del script HTML
Código :
<html> <head> <script type='text/javascript' src='Browser.js'></script> <script type='text/javascript'> var brw = new Browser(); 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); </script> </head> </html>
y aquí un ejemplo de tu navegador: Demo
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Mariux el 29 de Marzo de 2012
saludos
PD: porqué no lo subís a github?
Por redrbrt el 29 de Marzo de 2012
Mariux :
saludos
PD: porqué no lo subís a github?
implementacion del script HTML
Código :
pd: leere sobre github, lo desconosco
Por pepoflex el 30 de Marzo de 2012
Muchas Gracias hermano.
Por Kinduff el 30 de Marzo de 2012
Por The Fricky! el 31 de Marzo de 2012
Lo que aún no logro visualizar es para qué podría usarlo, siendo que la práctica recomendada es trabajar de acuerdo a las características y no a los navegadores, como hace Modernizr, por ejemplo.
¿Es posible que puedas mostrar un caso de uso o algo así?
Por pepoflex el 31 de Marzo de 2012
The Fricky! :
Lo que aún no logro visualizar es para qué podría usarlo, siendo que la práctica recomendada es trabajar de acuerdo a las características y no a los navegadores, como hace Modernizr, por ejemplo.
¿Es posible que puedas mostrar un caso de uso o algo así?
Yo también, pienso lo mismo, nose se me ocurrió que podrias usarlo, para redireccionar con javascript a un determinado index.php con una determinada hoja de estilos CSS, para cada Navegador. O que coja simplemente una Hoja de estilos CSS y la aplique a cada Navegador.
Por Dano el 31 de Marzo de 2012
http://api.jquery.com/jQuery.browser/
Por redrbrt el 31 de Marzo de 2012
Dano :
http://api.jquery.com/jQuery.browser/
No estoy seguro, tal vez la detección de iphone, ipod, ipad... etc, no conozco el alcance de $.browser
Por coso30 el 03 de Abril de 2012
Por The Fricky! el 05 de Abril de 2012
Aunque seguramente esto ya lo sabes
Por Dano el 05 de Abril de 2012
The Fricky! :
Aunque seguramente esto ya lo sabes
Asi es, mi pregunta no iba en el sentido de usarlo o no, sino en el ver si tiene algun sentido hacer una utileria que ya existe en jQuery. Ademas en todo caso yo extenderia la utileria de jQuery en vez de hacer una desde cero.(con fines estudiantiles o por lanzar algun proyecto personal, hacer algo desde cero es cool, pero en el negocio del desarrollo web, tienes que ser practico)
Saludos
Por Homero el 06 de Abril de 2012
Por redrbrt el 08 de Abril de 2012
Homero-blog :
si, también es válido
Por djmashe el 30 de Junio de 2012
Respecto a los que no la ven util, creo que no han tenido demasiada experiencia realizando tanto paginas webs como sistemas webs internet como "intranet".
Un claro ejemplo de la ultilidad de esto es restringir el acceso al sitio a determinados browser, ejemplo: "todos, menos IE".
Por Javier Azañedo el 30 de Julio de 2012
Por Manuel el 13 de Agosto de 2012
Por Fmanco el 29 de Enero de 2013
Por vladimir sanchez el 08 de Marzo de 2013
Esta muyyy completa gran aporte
Por Toto el 02 de Mayo de 2013
Por moz90 el 20 de Marzo de 2014
Por Alche el 04 de Octubre de 2014
Por juan carlos el 01 de Noviembre de 2014
Por juan carlos rojas ga el 10 de Febrero de 2015
Por Hiorimaru el 06 de Marzo de 2015
{ name: 'Trident', fullName: 'Microsoft Internet Explorer', pre: 'rv:' },
Por Richard el 27 de Marzo de 2015
Habria posibilidad de capturar los datos de servidor, por ejemplo conexion, puerto, etc?
Por serforin el 01 de Julio de 2015
Por pacocarm el 07 de Agosto de 2015
{ name: 'Edge', fullName: 'Microsoft Edge', pre: 'Edge/' }
Por Weena el 30 de Octubre de 2015