【问题标题】:Detect browser in Sinatra在 Sinatra 中检测浏览器
【发布时间】:2017-04-20 17:16:31
【问题描述】:

我需要知道(在 .rb/.haml 级别)设备是移动设备还是不支持浏览器。我不想(或者它不能很好地满足我的需要)在客户端解析 userAgent。

【问题讨论】:

    标签: ruby sinatra backwards-compatibility


    【解决方案1】:

    Gem browser 似乎正是我所需要的。它主要用于 Rails,我找不到 Sinatra 完全正确的 sn-p,所以我分享我的解决方案:

    require "browser"
    
    ...
    
    get "/"
      browser = Browser.new request.user_agent, accept_language: request.env["HTTP_ACCEPT_LANGUAGE"]
      break haml(:mobile, locals: { reason: "you are mobile" }) if browser.device.mobile?
      break haml(:mobile, locals: { reason: "you are not chrome" }) if not browser.chrome?
      ...
      haml :index
    end
    

    【讨论】:

    • 你知道browser 也解析用户代理吗?我认为这不是一个选择,因为这不能很好地满足您的需求?
    • @spickermann,当必须加载一些 html 和 js 时,它不是解析 userAgent 在客户端 的选项。我想在发布内容之前识别浏览器。糟糕,忘记了重要的代码行——更新了答案。
    【解决方案2】:

    你也可以使用:

    require 'sinatra'
    
    get '/' do
    
     request.user_agent
    
    end
    

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 2011-09-24
      • 2011-07-25
      • 2012-12-30
      • 2013-03-03
      相关资源
      最近更新 更多