0

我试图通过指定如果HTTP_USER_AGENT字符串对应于 [browser version x] 或更高版本,则应加载包含 CSS 动画的远程样式表来避免大量 PHP 代码。例如,知道 Chrome 19 及更高版本支持 CSS 动画,代码将检测 Chrome 的版本是否大于 19,并加载适当的样式表。
使用 PHP 是否可行?

4

3 回答 3

2

这是一种解决方案,但您必须不时更新用户代理字符串的解析器以包含其中的更改。使用代理字符串没有公认的标准,因此通常解析用户代理字符串非常困难,并且通常归结为查找表。

一种更具前瞻性的方法是使用例如Modernizr检测客户端对 CSS 动画的支持,然后根据结果加载样式表。这样你就不用关心,如果某些浏览器开发人员想在将来更改用户代理字符串的(结构)。

于 2012-08-20T15:19:03.490 回答
1

如果您必须为此使用 PHP,那么有一个内置函数get_browser()可以满足您的需求。

但是...如果您使用get_browser(),请注意它不是解决您问题的方法。

为了使用这个功能,你必须有一个最新的browsecap.ini文件,它基本上是一个文本文件,它定义了每个浏览器和每个发布的版本的功能。

这样做的缺点是显而易见的:

  • 您必须首先找到并安装最新的browsecap.ini 副本。
  • 每次发布新浏览器时,您都必须对其进行更新(并且新版本经常出现,因此这是一项艰巨的任务)。
  • 它可能不包括您要检测的所有功能。
  • 如果用户屏蔽他们的用户代理字符串,它将中断。

由于所有这些原因,我强烈建议不要使用get_browser(),或者实际上任何基于 PHP 或服务器端的解决方案。

相反,正如其他人所说,您应该使用Modernizr库进行调查。这是您安装在网站上的 Javascript 库,可在浏览器中进行功能检测。它永远不会过时,因为它专门看功能是否受支持,所以它不关心实际的浏览器是什么。

于 2012-08-20T15:36:49.800 回答
0

您可能希望考虑使用设备描述存储库 (DDR)。这是一个应用程序或 Web 服务,您可以传入用户代理字符串并获取该用户代理的已知功能列表。

这样做的好处是,随着新用户代理的出现,您不必不断更新自己的代码。

我最近在Dino Esposito 关于移动站点开发的 MSDN 文章中读到了 DDR 。他对 DDR 的功能和性质有出色的论述。

我意识到您正在使用 PHP,但连接/查询 DDR 应该与语言无关。

只是一个想法,希望这会有所帮助。

于 2012-08-20T15:29:46.137 回答