web-dev-qa-db-fra.com

Comment détecter le type de navigateur et sa version

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)
22
Syed Raza

Essayez le joyau du navigateur. Très simple et peut résoudre votre but.

Vous pouvez trouver le joyau ici très facile à utiliser.

23
Nishutosh Sharma

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

browsers_detection_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
27
TH Afridi

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
9
Chris Edwards

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.

3
Spyros

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'
}
0
bradlis7