如何检测浏览器类型及其版本

Sye*_*aza 27 ruby ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3

如何在Rails中检测浏览器类型及其版本.我想检查特定浏览器的版本,如果它不是要求用户升级它的浏览器版本..我使用下面指定的命令,但因为它不遵循标准模式我无法使用它.

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)
Run Code Online (Sandbox Code Playgroud)

TH *_*idi 28

注意:请注意一些搜索引擎将此视为一种入侵请参阅(Google HTTP USER AGENT)

 if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]Chrome\//
Run Code Online (Sandbox Code Playgroud)

或者在firefox的情况下

if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]*[^\t]Firefox\//
Run Code Online (Sandbox Code Playgroud)

并在这里检查,你将获得所有你需要的 浏览器宝石

browsers_detection_gem

这是一个可以检测所有浏览器让人感到寒冷的方法

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
Run Code Online (Sandbox Code Playgroud)


Nis*_*rma 27

试试浏览器gem.很简单,可以解决你的目的.

你可以找到宝石这里非常容易使用.


Chr*_*rds 9

也有用户代理的宝石:

<% 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
Run Code Online (Sandbox Code Playgroud)