2011-01-16 2 views
51

Привет всем, Мне было интересно, какие методы являются стандартными в отрасли для обнаружения браузера в Rails? Есть ли там камень, библиотека или образец кода, который может помочь определить браузер и применить класс или идентификатор к элементу body (X) HTML? Спасибо, мне просто интересно, что все используют, и есть ли принятый метод этого?Методы обнаружения браузеров Rails

Я знаю, что мы можем получить user.agent и проанализировать эту строку, но я не уверен, что это приемлемый способ обнаружения браузера.

Кроме того, я не пытаюсь обсуждать функцию обнаружения здесь, я прочитал несколько ответов для этого в StackOverflow, все, о чем я прошу, это то, что вы, ребята, сделали.

[UPDATE]

Так благодаря faunzy на GitHub, я вроде понимаю немного о проверке агента пользователя в 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 

ответ

23

Там библиотека библиотека рубина над на GitHub: https://github.com/gshutler/useragent

Я использую это сам, и он работает как рекламируется до сих пор. Для вашего случая использования вы, вероятно, могли бы вызвать библиотеку из вспомогательного метода в проекте Rails или что-то подобное.

Тем не менее, я не совсем уверен, что HTTP_USER_AGENT подвергается методам хелпера Rails. Если он не открыт, вы всегда можете выставить метод контроллера в качестве помощника (используя AbstractController::Helpers::ClassMethods#helper_method).

+0

Спасибо за ссылку, я использовал эту библиотеку, чтобы создать свою собственную. – alvincrespo

+4

Мне любопытно ... что вы добавили в свою версию библиотеки? Является ли исходный код доступным где-нибудь? –

+0

Ссылка мертва. : x –

4

Попробуйте request.env['HTTP_USER_AGENT'], это вернет вашего клиента User Agent. Там также быстрый помощник отправленного Hubert Łępicki

+0

Я пробовал HTTP_REFERER, но ничего не возвращал, поэтому использовал HTTP_USER_AGENT, и он вернул правильный агент пользователя, однако я ищу конкретные методы, которые люди использовали для синтаксического анализа этой строки, например, как пользовательское встроенное регулярное выражение или библиотека, которая существует, которая делает это для вас, вроде как помощник. – alvincrespo

+0

Ссылка не связана с пользовательским агентом. Здесь упоминается ресурс (например, какой url загружал изображение или какую другую страницу загружал страницу и т. Д.) – xinit

+0

К сожалению, я имел в виду пользовательский агент. И я связал вас с тем же ... – farnoy

57

Драгоценный камень browser специально разработан для обнаружения браузеров в Rails.

+0

Не знал о самоцвете, это мне очень помогло! –

+0

для планшетов он знает только ipad и android на сегодня – Evan

+0

Мы широко использовали это в больших приложениях с данными; это очень хорошо. Вы можете даже немного изменить его, чтобы отключить ботов; Я считаю, что сделал запрос на тягу с возможностью сделать это. – rcd

Смежные вопросы