首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails浏览器检测方法

Rails浏览器检测方法
EN

Stack Overflow用户
提问于 2011-01-17 03:00:52
回答 3查看 34.1K关注 0票数 52

大家好,我想知道在Rails中进行浏览器检测的行业标准方法是什么?是否有一些gem、库或示例代码可以帮助确定浏览器,并将类或id应用于(X)HTML的body元素?谢谢,我只是想知道每个人都用什么,有没有被接受的方法?

我知道我们可以获得user.agent并解析该字符串,但我不确定这是否是一种可接受的浏览器检测方式。

此外,我不想在这里讨论特征检测,我在StackOverflow上读到了很多关于这一问题的答案,我想知道的是你们都做了些什么。

更新

因此,多亏了GitHub上的faunzy,我对在Rails中检查用户代理有了一些了解,但我仍然不确定这是否是在Rails 3中检查用户代理的最佳方式。

def users_browser
user_agent =  request.env['HTTP_USER_AGENT'].downcase 
@users_browser ||= begin
  if user_agent.index('msie') && !user_agent.index('opera') && !user_agent.index('webtv')
                'ie'+user_agent[user_agent.index('msie')+5].chr
    elsif user_agent.index('gecko/')
        'gecko'
    elsif user_agent.index('opera')
        'opera'
    elsif user_agent.index('konqueror')
        'konqueror'
    elsif user_agent.index('ipod')
        'ipod'
    elsif user_agent.index('ipad')
        'ipad'
    elsif user_agent.index('iphone')
        'iphone'
    elsif user_agent.index('chrome/')
        'chrome'
    elsif user_agent.index('applewebkit/')
        'safari'
    elsif user_agent.index('googlebot/')
        'googlebot'
    elsif user_agent.index('msnbot')
        'msnbot'
    elsif user_agent.index('yahoo! slurp')
        'yahoobot'
    #Everything thinks it's mozilla, so this goes last
    elsif user_agent.index('mozilla/')
        'gecko'
    else
        'unknown'
    end
    end

    return @users_browser
end
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-17 05:20:15

在GitHub上有一个库ruby库:https://github.com/gshutler/useragent

我自己也在使用它,到目前为止,它的效果和广告宣传的一样好。对于您的用例,您可能会从Rails项目或类似项目的helper方法中调用库。

也就是说,我不能完全确定HTTP_USER_AGENT是否向Rails助手方法公开。如果没有公开控制器方法,您可以始终将控制器方法作为帮助器公开(通过使用AbstractController::Helpers::ClassMethods#helper_method)。

票数 23
EN

Stack Overflow用户

发布于 2011-12-11 05:04:03

browser gem是专门为Rails中的浏览器检测设计的。

票数 62
EN

Stack Overflow用户

发布于 2011-01-17 03:13:43

尝试request.env['HTTP_USER_AGENT'],这将返回您的客户端的用户代理。还有一个由Hubert Łępicki发布的快速助手

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4707400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档