2013-03-28 137 views
3

我有一个PHP例程,它需要HTML,对它进行一些处理,然后将其呈现出来。浏览器检测目前的最佳做法是什么

的问题是,根据浏览器可能是也可能不是一个额外
添加到输出。

如果我能得到我的浏览器可以为这个问题的代码。但是,至于如何获得浏览器的使用方式,我感到困惑。

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

谢谢!

[编辑:谢谢大家的好评。我学到新的东西,想标记所有答复作为一个答案,但因为我只能选择一个,我要选择Justin的,因为他的答复我的问题可能是造型。]

+0

从1.9开始,您无法使用$ .browser。你认为你需要测试什么,为什么> – mplungjan

+0

你需要客户端还是服务器端的信息? – Burimi

+0

我总是发现[this](http://www.quirksmode.org/js/detect.html)&[this](http://www.quirksmode.org/js/support.html)有帮助 –

回答

5

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

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

+0

如何检测浏览器的功能并添加额外的
? – user390480

+0

@ user390480 - 您确定浏览器实际上是增加了一个额外的
元素,而不仅仅是对元素进行不同的样式设计吗?这听起来像一个造型问题,而不是代码问题。 –

1

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

这是一个更好的主意,修正错误,并用JavaScript/CSS问题之后比铬/火狐等浏览器。

1

当前的最佳做法是使用特征检测。有整个库专门用于此,如Modernizr$.support作为jQuery API的一部分。这个想法是检查缺少的功能,并回退到第二级支持,直到提供一个消息表明该功能不受支持。

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

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

的一点是,如果你想尝试在浏览器是什么你将不得不接受错误的可能性,一定要猜测。

相关问题