ruby-on-rails - que - ruby on rails tutorial
Cómo detectar el tipo de navegador y su versión (5)
¿Cómo puedo detectar el tipo de navegador y su versión en Rails? Quiero verificar la versión del navegador específico y si no es una versión requerida del navegador, solicito al usuario que lo actualice. Utilizo el comando especificado a continuación pero, como no sigue un patrón estándar, no puedo usarlo.
request.env[''HTTP_USER_AGENT'']
Chrome out put is below
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16
Safari out put is below
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
FireFox out put is below
Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0
Opera out put is below
Opera/9.80 (Windows NT 5.1; U; en) Presto/2.8.131 Version/11.10
Internet Explorer out put is below
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)
Lo que haces es en realidad la forma de hacerlo. Ahora puede procesar la información del agente de usuario con una expresión regular, buscando coincidencias en Firefox, Chrome o cualquier otro navegador o versión que desee.
Prueba la gema del navegador. Muy simple y puede resolver su propósito.
Puedes encontrar la gema aquí muy fácil de usar.
NOTA: Tenga cuidado de que algunos motores de búsqueda vean esto como un tipo de intrusión Ver (AGENTE DE USUARIO HTTP DE HTTP)
if request.env[''HTTP_USER_AGENT''] =~ /[^/(]*[^/)]Chrome///
o en el caso de Firefox
if request.env[''HTTP_USER_AGENT''] =~ /[^/(]*[^/)]*[^/t]Firefox///
y mira esto aquí obtendrás todo lo que necesitas navegador Gema
y aquí hay un método que puede detectar todos los navegadores para que el hombre se relaje
def browser_detection
result = request.env[''HTTP_USER_AGENT'']
browser_compatible = ''''
if result =~ /Safari/
unless result =~ /Chrome/
version = result.split(''Version/'')[1].split('' '').first.split(''.'').first
browser_compatible = ''Application is not functional for Safari version/'s ''+version if version.to_i < 5
else
version = result.split(''Chrome/'')[1].split('' '').first.split(''.'').first
browser_compatible = ''Application is not functional for Chrome version/'s ''+version if version.to_i < 10
end
elsif result =~ /Firefox/
version = result.split(''Firefox/'')[1].split(''.'').first
browser_compatible = ''Application is not functional for Firefox version/'s ''+version if version.to_i < 5
elsif result =~ /Opera/
version = result.split(''Version/'')[1].split(''.'').first
browser_compatible = ''Application is not functional for Opera version/'s ''+version if version.to_i < 11
elsif result =~ /MSIE/
version = result.split(''MSIE'')[1].split('' '').first
browser_compatible = ''Application is not functional for Microsoft Internet Explorer version/'s ''+version if version.to_i < 9
end
browser_compatible
end
Aunque esta es una solución frontend, prefiero verificar una característica específica que se requiera, como flexbox. Puede usar algo como Modernizr , o simplemente un simple chequeo de JavaScript lo hará ( https://.com/a/27047981/179311 ).
if(!("flexWrap" in document.documentElement.style)) {
// IE 10, Chrome 20 and Firefox 27 and anything older will hit this.
alert(''your browser is out of date'');
// maybe this is preferred
// window.location = ''/browser-unsupported''
}
También hay gema useragent :
<% user_agent = UserAgent.parse(request.env["HTTP_USER_AGENT"]) %>
App: <%= user_agent.application %> # Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0)
Browser: <%= user_agent.browser %> # Firefox
Version: <%= user_agent.version %> # 22.0
Platform: <%= user_agent.platform %> # Macintosh
Mobile: <%= user_agent.mobile? %> # False
OS: <%= user_agent.os %> # OS X 10.8