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

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

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

你可以在这里找到gem很容易使用。

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

  if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]Chrome\// 

或者在firefox的情况下

 if request.env['HTTP_USER_AGENT'] =~ /[^\(]*[^\)]*[^\t]Firefox\// 

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

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 

还有使用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 

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

虽然这是一个前端解决方案,但我更愿意检查所需的特定function,例如flexbox。 你可以使用像Modernizr这样的东西,或者只做一个简单的JavaScript检查( 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' }