如何检测浏览器功能?

时间:2012-07-31 16:07:40

标签: php browser

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

5 个答案:

答案 0 :(得分:3)

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

功能检测更恰当地属于客户端代码,即JavaScript。 Modernizr是可用的最佳库之一,可提供简单的功能检测。

使用此功能,您可以检测客户端上的功能,然后发出将更新服务器上的变量的AJAX请求。它不会在第一页加载时工作,但是之后的每个请求都能够依赖于服务器上可用于查询的那些设置(如果将它们存储在Session中)。

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

答案 1 :(得分:0)

您是否见过http://www.html5test.com并了解其运作方式。

答案 2 :(得分:0)

PHP有一个名为get_browser的函数,用于返回浏览器功能的关联数组。但是,您需要下载一个名为browscap.ini的文件,其中包含有关浏览器的信息,以便该功能正常运行。有关如何获取和安装此文件的说明,请参见该函数的documentation page

答案 3 :(得分:0)

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

PHP浏览器检测技术:

  1. google plugin用于移动检测
  2. 使用$ _SERVER ['HTTP_USER_AGENT']
  3. 使用get_browser()
  4. By Mobiforge

答案 4 :(得分:0)

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

var result = JSON.stringify(Modernizr);
$.post('modern.php',{json: result});