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

Ruby on rails 如何检测浏览器类型及其版本,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-plugins,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails Plugins,如何在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 Sa

如何在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)

你所做的实际上就是你的方式。现在,您可以使用正则表达式处理用户代理信息,在Firefox、Chrome或您喜欢的任何其他浏览器或版本上查找匹配项。

注意:小心一些搜索引擎将此视为一种入侵,请参阅(谷歌HTTP用户代理)

 if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]Chrome\//
或者在firefox的情况下

if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]*[^\t]Firefox\//
检查这里,你会得到你需要的一切

这里有一个方法可以检测所有的浏览器,所以冷静的人

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
def浏览器\u检测
结果=request.env['HTTP\u USER\u AGENT']
浏览器兼容=“”
如果结果=~/Safari/
除非结果=~/Chrome/
version=result.split('version/')[1]。split('').first.split('.').first
browser_compatible='如果版本.to_i<5,则Safari版本的应用程序+版本不起作用
其他的
version=result.split('Chrome/')[1]。split('').first.split('.').first
browser_compatible='如果version.to_i<10,应用程序对于Chrome版本的+版本不起作用
结束
elsif result=~/Firefox/
version=result.split('Firefox/')[1]。split('.')。首先
browser_compatible='如果version.to_i<5,则Firefox版本的应用程序+版本不起作用
elsif结果=~/Opera/
version=result.split('version/')[1]。split('.')。首先
browser_compatible='如果version.to_i<11,则Opera版本的应用程序+版本不起作用
elsif结果=~/MSIE/
version=result.split('MSIE')[1]。split('')。首先
browser_compatible='如果版本.to_i<9,则Microsoft Internet Explorer版本的+版本的应用程序不起作用
结束
浏览器兼容
结束

试试浏览器gem。非常简单,可以解决您的目的

您可以发现gem非常容易使用。

还有gem:


应用程序:#Mozilla/5.0(Macintosh;英特尔Mac OS X 10.8;rv:22.0)
浏览器:#Firefox
版本:#22.0
平台:#麦金塔
手机:#错
OS:#OS X 10.8

虽然这是一个前端解决方案,但我更喜欢检查所需的特定功能,例如flexbox。您可以使用类似的方法,或者只需简单的JavaScript检查即可()


嗅探
'HTTP\u USER\u AGENT'
是传统的方法。有可能其他应用程序会欺骗你的代码,或者用户会更改浏览器的签名来欺骗你,所以不要明确信任它。@SyedRaza Google也可以为你解决这个问题。我的意思是,问“我该如何处理这件事和那件事”没有错,但是假设人们会在你已经知道“如何处理”的情况下为你做工作,我认为这有点懒惰。我们有什么方法可以检测浏览器版本是否最新?提前谢谢。
<% 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
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'
}