comment puis-je détecter le type de navigateur et sa version dans Rails. Je veux vérifier sur la version du navigateur spécifique et si sa version du navigateur n'est pas requise, demander à l'utilisateur de le mettre à niveau. J'utilise ci-dessous la commande spécifiée, mais comme il ne suit pas un modèle standard, je suis incapable de l'utiliser.
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)
Essayez le joyau du navigateur. Très simple et peut résoudre votre but.
Vous pouvez trouver le joyau ici très facile à utiliser.
NOTE: Faites attention à ce que certains moteurs de recherche voient cela comme un type d’intrusion. Voir (AGENT UTILISATEUR Google HTTP)
if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]Chrome\//
ou dans le cas de firefox
if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]*[^\t]Firefox\//
et cochez cette case, vous obtiendrez tout ce dont vous avez besoin browser Gem
et voici une méthode qui peut détecter tous les navigateurs si l'homme froid
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
Il y a aussi useragent gem:
<% 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
Ce que vous faites est en fait le moyen de le faire. Désormais, vous pouvez traiter les informations de l'agent utilisateur avec une expression régulière, en recherchant des correspondances dans Firefox, Chrome ou tout autre navigateur ou version de votre choix.
Bien qu'il s'agisse d'une solution frontale, je préfère vérifier qu'une fonctionnalité spécifique est requise, telle que flexbox. Vous pouvez utiliser quelque chose comme Modernizr , ou juste une simple vérification JavaScript fera ( https://stackoverflow.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'
}