script horizontal ejemplos datasets chartjs chart bar javascript prototypejs browser-detection

javascript - horizontal - Navegador y versión en la biblioteca de prototipos?



labels chart js (6)

Estoy acostumbrado a usar Atlas. Recientemente comencé a hacer la transición a jQuery y, en ocasiones, a prototipos. El proyecto en el que estoy trabajando actualmente es usando un prototipo.

En Prototype, ¿hay alguna manera fácil de obtener el nombre y la versión del navegador? Revisé la documentación de la API y parece que no puedo encontrarla.


Prototype ofrece algunos indicadores que puede verificar para tener una idea de qué navegador se está ejecutando. Tenga en cuenta que es una práctica mucho mejor comprobar la funcionalidad que desea utilizar en lugar de buscar un navegador en particular.

Aquí está la parte de detección de explorador y funciones de prototype.js actualmente en el árbol fuente:

var Prototype = { Browser: { IE: !!(window.attachEvent && navigator.userAgent.indexOf(''Opera'') === -1), Opera: navigator.userAgent.indexOf(''Opera'') > -1, WebKit: navigator.userAgent.indexOf(''AppleWebKit/'') > -1, Gecko: navigator.userAgent.indexOf(''Gecko'') > -1 && navigator.userAgent.indexOf(''KHTML'') === -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement(''div'')[''__proto__''] && document.createElement(''div'')[''__proto__''] !== document.createElement(''form'')[''__proto__''] }, }

Para que pueda verificar si el navegador actual es IE, investigue el valor de Prototype.Browser.IE o, alternativamente, sea más compatible con el futuro y busque una característica en particular como XPath con Prototype.BrowserFeatures.XPath .


Como complemento a la respuesta de Nertzy, puede agregar la capacidad de detectar versiones de IE usando esto:

Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 6; Prototype.Browser.IE7 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 7; Prototype.Browser.IE8 = Prototype.Browser.IE && !Prototype.Browser.IE6 && !Prototype.Browser.IE7;

Por otro lado, también debe detectar los detalles del agente de usuario en el lado del servidor. De todos modos, la detección del navegador es una estrategia seriamente defectuosa para escribir scripts entre navegadores, que solo debe usarse cuando falla la detección de características del navegador. Es bastante fácil para un usuario alterar los detalles de su agente de usuario.


Tengo prototype.js extendido después de:

var Prototype = { ... };

con este:

// extension if (Prototype.Browser.IE) { if (/MSIE (/d+/./d+);/.test(navigator.userAgent)) { Prototype.BrowserFeatures[''Version''] = new Number(RegExp.$1); } }

Me funciona bien, llamar es como:

if (Prototype.Browser.IE && Prototype.BrowserFeatures[''Version''] == 8) { ... }


Tiene razón: el prototipo no proporciona una utilidad para determinar el nombre o la versión del navegador.

Si necesita obtener específicamente la información del navegador como un complemento, le sugiero que agregue lo siguiente (tomado directamente de jQuery):

var Browser = Class.create({ initialize: function() { var userAgent = navigator.userAgent.toLowerCase(); this.version = (userAgent.match( /.+(?:rv|it|ra|ie)[//: ]([/d.]+)/ ) || [])[1]; this.webkit = /webkit/.test( userAgent ); this.opera = /opera/.test( userAgent ); this.msie = /msie/.test( userAgent ) && !/opera/.test( userAgent ); this.mozilla = /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ); } });


Uso esto más allá de las definiciones de navegador de Prototype.

Object.extend(Prototype.Browser, { ie6: (/MSIE (/d+/./d+);/.test(navigator.userAgent)) ? (Number(RegExp.$1) == 6 ? true : false) : false, ie7: (/MSIE (/d+/./d+);/.test(navigator.userAgent)) ? (Number(RegExp.$1) == 7 ? true : false) : false, ie8: (/MSIE (/d+/./d+);/.test(navigator.userAgent)) ? (Number(RegExp.$1) == 8 ? true : false) : false, ie9: (/MSIE (/d+/./d+);/.test(navigator.userAgent)) ? (Number(RegExp.$1) == 9 ? true : false) : false });

¡Espero eso ayude!


<script type="text/JavaScript"> function getBrowserVersion() { var msg = "Not Recognised Browser"; if (/Firefox[///s](/d+/./d+)/.test(navigator.userAgent)) { var ffversion = new Number(RegExp.$1) for (var i = 1; i < 20; i++) { if (ffversion == i) { msg = "FF" + i + "x"; break; } } } else if (/MSIE (/d+/./d+);/.test(navigator.userAgent)) { var ieversion = new Number(RegExp.$1) for (var i = 1; i < 20; i++) { if (ieversion == i) { msg = "IE" + i + "x"; break; } } } alert(msg); // return msg; } </script>