【发布时间】:2010-11-25 14:05:47
【问题描述】:
我需要使用 Ruby 编写一个if 语句来检查客户端的浏览器是否支持 HTML5。
【问题讨论】:
-
你签出html5test.com 了吗?他们进行了非常彻底的 html 功能支持检查。
-
modernizr 帮你解决这个问题
标签: ruby-on-rails css ruby browser html
我需要使用 Ruby 编写一个if 语句来检查客户端的浏览器是否支持 HTML5。
【问题讨论】:
标签: ruby-on-rails css ruby browser html
短版:你不能,也不应该。
长版:如果您进行一些用户代理嗅探,可能会识别出用户的浏览器是否支持 HTML5。但这需要付出相当大的努力才能做到正确。更好的解决方案是使用 Modernizr (http://www.modernizr.com/) 之类的东西在客户端进行特征检测。
【讨论】:
可以根据HTTP_USER_AGENT 字符串读取浏览器信息,但是,如上所述和许多其他地方,也很容易欺骗该信息。在服务器端,我们只关心它,因为它让我们可以全面了解用于访问我们网站的客户端浏览器。
网站尝试在后端对浏览器做出反应并呈现不同的内容有一段时间,但由于浏览器如何欺骗其他浏览器而失败,但没有相同的错误。
正如@Stephen Orr 所说,CSS 是一种更好的处理方式。当然这很糟糕而且仍然容易出错,但它比嗅探浏览器的签名要好。我们曾经诅咒 IE 的每个版本,因为它破坏了以前的修复。幸运的是,随着供应商逐渐接近标准,情况似乎正在好转。
【讨论】:
可以检测到大多数功能(使用 JavaScript),但是像 form-date-feature 字段这样的一些类型是一个问题:http://united-coders.com/matthias-reuter/user-agent-sniffing-is-back
【讨论】:
可以在 HTML5 上执行 Feature detection,根据需要检测 HTML5 中的单个功能。然而,没有办法检测浏览器是否支持 HTML5 作为一大块 - 因为没有“官方”方法来判断浏览器是支持所有 HTML5 还是只支持部分 HTML5。
【讨论】:
< [html5 element] id="somethingtobedazzledby">
Upgrade your browser
</ [html5 element] >
【讨论】: