我的方案是检索浏览器和布局信息 - 包括版本并保留它们以进行历史记录跟踪。所以这不是用于检查功能。由于JQuery.browser已经过时,我已经看到最流行的方法是阅读navigator.userAgent。但是,这个值是不稳定的,可以被浏览器覆盖,我想这不应该是推荐的方式。这样做还有其他方法吗?
答案 0 :(得分:4)
你真的只有两个选择:
如果您想了解各种不同的浏览器(包括移动浏览器)以及每种浏览器的各种版本,那么为每个浏览器/版本组合确定测试是很多工作。
我说这实际上取决于你收集的信息。如果您真的只是好奇浏览器在使用您的应用程序,那么您可以将浏览器和测试支持指向那些大多数使用您的应用程序的浏览器,那么只需使用用户代理字符串就可以了。绝大多数浏览器都不会伪造使用者,所以如果这是统计使用的话,那么一小部分假货不会以任何好的方式扭曲你的数字,并且使用useragent字符串会更简单。
如果,您试图在给定的浏览器中决定在该特定浏览器中依赖哪些javascript功能,那么您最好设计一个功能测试来查看该浏览器是否具有该功能你想使用,因为这里的假用户代理字符串(或你自己的代码中错误的useragent逻辑)的后果是应用程序在该浏览器中无法正常工作。
一个“中间”解决方案可能只是确定浏览器所在的家庭(IE,Chrome,Firefox,Safari等),而您并不关心究竟是哪个版本,然后是一组功能测试因为每个家庭都倾向于至少有一些识别特征,所以可能会发现没有太多麻烦。这肯定比使用useragent更多的工作,但比使用功能测试确定精确版本要少得多。
另一个“中间”解决方案可能是通过上述更简单的功能测试识别浏览器系列,然后查看是否与userAgent字符串一致,如果是,那么您决定相信该版本的userAgent字符串。如果没有,你会丢掉数据,发现浏览器在某处(或者你的测试有轻微的缺陷)。