0

是否可以用 PHP 编写一个脚本来检测浏览器 HTML5 和 CSS3 功能支持?如果没有,是否有可能用任何语言?

4

5 回答 5

3

PHP 对客户端知之甚少,除了通过 HTTP 提供并存储在$_SERVER超全局中的内容。这几乎是设计使然,因为 PHP 在服务器上而不是在客户端上运行。

特征检测更恰当地属于客户端代码,也就是 JavaScript。 Modernizr是提供简单特征检测的最佳库之一。

使用它,您可以检测客户端上的功能,然后发出将更新服务器上的变量的 AJAX 请求。它不适用于第一个页面加载,但之后的每个请求都将能够依赖这些设置,如果您将它们存储在 Session.

解决此问题的解决方案是首先查看值是否存储在服务器上,如果不输出仅执行此功能检测/AJAX 调用的页面,然后重定向回最初通过 javascript 请求的任何页面。此解决方案存在一些缺陷(您网站的所有访问者最初都会看到一个带有快速重定向的空白屏幕,这不是建立信任的最佳方式,而且您可能会为一些您可能永远找不到的令人讨厌的情况做好准备因为您的服务器代码现在依赖于客户端实现,我怀疑您是否会在每个可用的客户端上测试您的应用程序)。我只提供这个作为一种解决方法。

于 2012-07-31T16:10:19.713 回答
0

PHP 有一个名为 get_browser 的函数,用于返回浏览器特性的关联数组。但是,您需要下载一个名为 browscap.ini 的文件,其中包含有关浏览器的信息,这样该功能才能正常工作。有关如何获取和安装此文件的说明可以在该函数的文档页面上找到。

于 2013-08-15T05:56:19.070 回答
0

您是否看过http://www.html5test.com并了解它是如何工作的。

于 2012-07-31T18:48:13.147 回答
0

您应该在 php 中检测浏览器,然后为不同的浏览器使用不同的代码。

PHP浏览器检测技术:

  1. 用于移动检测的谷歌插件
  2. 使用 $_SERVER['HTTP_USER_AGENT']
  3. 使用 get_browser()
  4. 由 Mobiforge
于 2014-01-24T07:22:14.133 回答
0

我发现非常有用的是将modernizr序列化为json字符串并通过ajax将其发布到服务器。在服务器上,将此保留到您的会话中,您现在可以根据访问者可用的功能发送自定义内容。

var result = JSON.stringify(Modernizr);
$.post('modern.php',{json: result});
于 2014-03-04T20:02:59.180 回答