什么是浏览器检测的当前最佳实践

时间:2013-03-28 14:48:16

标签: php jquery html cross-browser

我有一个PHP例程,它接受HTML,对它进行一些处理,并将其呈现出来。

问题在于,根据浏览器的不同,可能会或可能不会在输出中添加额外的内容。

如果我可以使用浏览器,我可以为此问题编写代码。但是,到目前为止我对如何使用浏览器感到困惑。

JQuery文档说不要使用$ browser属性。其他人说不要使用navigator.userAgent。那么我应该使用什么?

谢谢!

[编辑:谢谢大家的回答。我学到了一些新的东西,并希望将所有回复标记为答案,但由于我只能选择一个,我会选择贾斯汀,因为他回答我的问题可能是造型。]

3 个答案:

答案 0 :(得分:5)

浏览器检测的最佳做法是不使用

您应该使用功能检测。查看jQuery.support中的测试套件。

答案 1 :(得分:1)

如果你真的,真的,真的想知道浏览器,你可以使用get_browser()(http://php.net/manual/en/function.get-browser.php)。我不推荐它,因为它不仅速度慢且需要不断更新文件,因此根据不同的浏览器为用户提供不同的输出也是一种不好的做法。

除了chrome / firefox之外的其他浏览器,修复javascript / css的错误和问题是个更好的主意。

答案 2 :(得分:1)

目前的最佳做法是使用特征检测。作为jQuery API的一部分,有专门用于此的整个库,例如Modernizr$.support。我们的想法是检查缺少的功能并回退到辅助支持,一直到只提供不支持该功能的消息。

Web开发人员现在的口头禅是不做浏览器检测,但我认为在某些情况下这是不现实的。有很多时候您可能想说“您正在使用Internet Explorer 7!”等等,这显然需要通过JavaScript端的php get_browser()navigator.userAgent猜测用户代理字符串。我也遇到了一个网络应用程序的问题,其中IE7& IE8使用了太多内存来处理一定数量的数据 - 这显然不是可以检测到的“功能”。

您还可以使用功能检测来猜测特定的浏览器。例如,IE7没有window.localStorage

关键在于,如果您想尝试猜测浏览器是什么,您将不得不接受某种错误的可能性。