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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5787880/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-03 01:00:00  来源:igfitidea点击:

How to detect browser type and its version

ruby-on-railsrubyruby-on-rails-3ruby-on-rails-plugins

提问by Syed Raza

how can i detect browser type and its version in Rails. I want to put check on the version of specific browser and if its not required browser version than ask user to upgrade it.. i use below specified command but as its not following a standard pattern am unable to use it.

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

回答by TH Afridi

NOTE: Be careful some search engines see this as a type of intrusion See ( Google HTTP USER AGENT )

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

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

or in the case of firefox

或者在火狐的情况下

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

and check this here you will get all you need browser Gem

在这里检查这个你会得到所有你需要的 浏览器宝石

browsers_detection_gem

browsers_detection_gem

and here is a method which can detect all browsers so chill man

这是一种可以检测所有浏览器的方法

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

回答by Nishutosh Sharma

Try the browser gem. Very simple and can solve your purpose.

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

You can find the gem Herevery easy to use.

您可以在这里找到 gem非常易于使用。

回答by Chris Edwards

There is also useragentgem:

还有用户代理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

回答by Spyros

What you do is actually the way to do it. Now, you can process the user agent information with a regular expression, looking for matches on Firefox, Chrome or any other browser or version you like.

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

回答by bradlis7

Though this is a frontend solution, I prefer to check for a specific feature that is required, such as flexbox. You can use something like Modernizr, or just a simple JavaScript check will do (https://stackoverflow.com/a/27047981/179311).

虽然这是一个前端解决方案,但我更喜欢检查所需的特定功能,例如 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'
}