【问题标题】:How do I check if a browser supports HTML5 and CSS3 features using Ruby?如何使用 Ruby 检查浏览器是否支持 HTML5 和 CSS3 功能?
【发布时间】:2010-11-25 14:05:47
【问题描述】:

我需要使用 Ruby 编写一个if 语句来检查客户端的浏览器是否支持 HTML5。

【问题讨论】:

  • 你签出html5test.com 了吗?他们进行了非常彻底的 html 功能支持检查。
  • modernizr 帮你解决这个问题

标签: ruby-on-rails css ruby browser html


【解决方案1】:

短版:你不能,也不应该。

长版:如果您进行一些用户代理嗅探,可能会识别出用户的浏览器是否支持 HTML5。但这需要付出相当大的努力才能做到正确。更好的解决方案是使用 Modernizr (http://www.modernizr.com/) 之类的东西在客户端进行特征检测。

【讨论】:

  • 嗯??浏览器信息在http请求的头部发送!!您可以通过 ruby​​ on rails 中的 request.env["HTTP_USER_AGENT"] 命令阅读它,我想知道每个著名浏览器的哪些版本可以处理大多数 html5 功能
  • 这就是我的意思,您可以随心所欲地嗅探。但是,这不是一个有保证的解决方案,与替代方案相比实际上是一个非常糟糕的主意。为什么还需要检查服务器端?
  • 不会100%准确,但是我想做Chrome 5及以上,firefox4,IE12983及以上,opera ??及以上,还有野生动物园??及以上为我的页面呈现完全不同的布局......我想我回答了我自己的问题,感谢您的帮助
  • 我认为您仍然应该在客户端执行此操作,并根据 Modernizr 将插入到您的 HTML 中的类来编写 CSS。这样,您就可以支持新旧 - 渐进增强!
  • 我正在修改整个页面.. 这样支持它会更容易
【解决方案2】:

可以根据HTTP_USER_AGENT 字符串读取浏览器信息,但是,如上所述和许多其他地方,也很容易欺骗该信息。在服务器端,我们只关心它,因为它让我们可以全面了解用于访问我们网站的客户端浏览器。

网站尝试在后端对浏览器做出反应并呈现不同的内容有一段时间,但由于浏览器如何欺骗其他浏览器而失败,但没有相同的错误。

正如@Stephen Orr 所说,CSS 是一种更好的处理方式。当然这很糟糕而且仍然容易出错,但它比嗅探浏览器的签名要好。我们曾经诅咒 IE 的每个版本,因为它破坏了以前的修复。幸运的是,随着供应商逐渐接近标准,情况似乎正在好转。

【讨论】:

  • 谢谢 Greg,我认为你说的部分内容比我说的要好。
【解决方案3】:

可以检测到大多数功能(使用 JavaScript),但是像 form-date-feature 字段这样的一些类型是一个问题:http://united-coders.com/matthias-reuter/user-agent-sniffing-is-back

【讨论】:

    【解决方案4】:

    可以在 HTML5 上执行 Feature detection,根据需要检测 HTML5 中的单个功能。然而,没有办法检测浏览器是否支持 HTML5 作为一大块 - 因为没有“官方”方法来判断浏览器是支持所有 HTML5 还是只支持部分 HTML5。

    【讨论】:

      【解决方案5】:
      < [html5 element]  id="somethingtobedazzledby">
          Upgrade your browser
      </ [html5 element] >
      

      【讨论】:

        猜你喜欢
        • 2020-01-04
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多