2014-11-06 28 views
-1

我的场景是检索浏览器和布局信息 - 包括版本并保留它们以进行历史记录跟踪。所以这不是为了检查功能。由于JQuery.browser已经过时,我已经看到了最流行的方式来浏览这个是通过阅读navigator.userAgent。但是,这个值是不稳定的,可以被浏览器覆盖,我想这不应该是推荐的方式。这样做有没有其他办法?除了检索UserAgent之外,还有其他方式获取浏览器信息吗?

+0

据我所知,这是唯一的方法...除非你想做一些测试,它支持哪些HTML标签来告诉IE版本 – Steve 2014-11-06 01:35:19

回答

4

你真的只有两种选择:

  1. 你可以相信的userAgent字符串
  2. 您可以在浏览器中运行各种功能测试,试图找出哪些浏览器的家人和版本,它确实是。

如果您想了解各种不同的浏览器(包括移动浏览器)以及各种版本的各种浏览器,那么确定每个浏览器/版本组合的测试是很多工作。

我会说这实际上取决于你收集的信息。如果您真的只是好奇浏览器使用您的应用程序,那么您可以将浏览器和测试支持指向最常使用您的应用程序的浏览器,然后仅使用用户代理字符串就可以。大多数浏览器不会伪造useragent,所以如果这是统计用途,那么一小部分假货不会以任何好的方式扭曲你的数字,并且使用useragent字符串的方式更简单。

如果您试图在给定的浏览器中决定在特定浏览器中依赖哪种JavaScript功能,那么您远远不止设计功能测试以查看该浏览器是否实际上具有功能,因为这里的假用户代理字符串(或您自己的代码中的一段错误的useragent逻辑)导致该应用在该浏览器中无法正常工作。


一个“中间”的解决方案可能是只识别浏览器为(IE,Chrome浏览器,火狐,Safari,等...),什么家庭,你不关心到底哪个版本,那么功能测试集可能可以看出,没有太多麻烦,因为每个家庭至少有至少一些识别特殊功能。这肯定比仅使用useragent更有效,但比使用特性测试确定确切版本的工作量少得多。

另一个“中间”解决方案可能是通过上述更简单的功能测试来识别浏览器系列,然后查看它是否与userAgent字符串一致,如果是,则决定相信该版本的userAgent字符串。如果不是的话,你会抛出数据来判断浏览器是否在某处对你撒谎(或者你的测试存在轻微缺陷)。

+0

谢谢你的评论。我问这个问题是因为我从Salesforce文档中读到这个值是可选的,不应该依赖它。但是从现在开始,它只是一种选择,它适用于大多数主流浏览器,我想这已经够用了。我已向Salesforce发送文档更改请求。 – 2014-11-06 01:48:22

相关问题