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
How to detect browser type and its version
提问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
在这里检查这个你会得到所有你需要的 浏览器宝石
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
回答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'
}

