3

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

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

如果我能得到浏览器,我可以为这个问题编写代码。但是,到目前为止,我对如何获取正在使用的浏览器的发现感到困惑。

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

谢谢!

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

4

3 回答 3

5

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

您应该改用特征检测。查看jQuery.support中的测试套件。

于 2013-03-28T14:50:34.833 回答
1

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

对于 chrome/firefox 以外的浏览器,最好在之后修复 javascript/css 的错误和问题。

于 2013-03-28T14:53:49.300 回答
1

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

现在 Web 开发人员的口头禅是不要进行浏览器检测,但我认为这在某些情况下是不现实的。很多时候您可能想说“您正在使用 Internet Explorer 7!” 或类似的,这显然需要通过 phpget_browser()navigator.userAgentJavaScript 端猜测用户代理字符串。我还遇到了一个 Web 应用程序的问题,其中 IE7 和 IE8 使用太多内存来处理特定的数据负载——这显然不是可以检测到的“功能”。

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

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

于 2013-03-28T14:55:17.163 回答