我的场景是检索浏览器和布局信息 - 包括版本并保留它们以进行历史记录跟踪。所以这不是为了检查功能。由于JQuery.browser已经过时,我已经看到了最流行的方式来浏览这个是通过阅读navigator.userAgent。但是,这个值是不稳定的,可以被浏览器覆盖,我想这不应该是推荐的方式。这样做有没有其他办法?除了检索UserAgent之外,还有其他方式获取浏览器信息吗?
回答
你真的只有两种选择:
- 你可以相信的userAgent字符串
- 您可以在浏览器中运行各种功能测试,试图找出哪些浏览器的家人和版本,它确实是。
如果您想了解各种不同的浏览器(包括移动浏览器)以及各种版本的各种浏览器,那么确定每个浏览器/版本组合的测试是很多工作。
我会说这实际上取决于你收集的信息。如果您真的只是好奇浏览器使用您的应用程序,那么您可以将浏览器和测试支持指向最常使用您的应用程序的浏览器,然后仅使用用户代理字符串就可以。大多数浏览器不会伪造useragent,所以如果这是统计用途,那么一小部分假货不会以任何好的方式扭曲你的数字,并且使用useragent字符串的方式更简单。
如果您试图在给定的浏览器中决定在特定浏览器中依赖哪种JavaScript功能,那么您远远不止设计功能测试以查看该浏览器是否实际上具有功能,因为这里的假用户代理字符串(或您自己的代码中的一段错误的useragent逻辑)导致该应用在该浏览器中无法正常工作。
一个“中间”的解决方案可能是只识别浏览器为(IE,Chrome浏览器,火狐,Safari,等...),什么家庭,你不关心到底哪个版本,那么功能测试集可能可以看出,没有太多麻烦,因为每个家庭至少有至少一些识别特殊功能。这肯定比仅使用useragent更有效,但比使用特性测试确定确切版本的工作量少得多。
另一个“中间”解决方案可能是通过上述更简单的功能测试来识别浏览器系列,然后查看它是否与userAgent字符串一致,如果是,则决定相信该版本的userAgent字符串。如果不是的话,你会抛出数据来判断浏览器是否在某处对你撒谎(或者你的测试存在轻微缺陷)。
谢谢你的评论。我问这个问题是因为我从Salesforce文档中读到这个值是可选的,不应该依赖它。但是从现在开始,它只是一种选择,它适用于大多数主流浏览器,我想这已经够用了。我已向Salesforce发送文档更改请求。 – 2014-11-06 01:48:22
- 1. 除了webkit,mozila还有其他的web浏览器实现吗?
- 2. 除了PIVOT之外,还有其他的方法吗?
- 3. JavaBean除了getter和setter之外还有其他方法吗?
- 4. 除了转义引号之外,还有其他方法吗?
- 5. 除了Android SDK之外,还有其他的Android模拟器吗?
- 6. 除了CURL以外,还有其他休息客户选择吗?
- 7. 除了为网站编制索引器外,还有其他缓存工具/浏览器会执行请求吗?
- 8. Scala:除了scala之外,还有其他的尝试吗?
- 9. EOL == EOS除了BASIC之外还有其他语言吗?
- 10. 除了Siphon之外,iPhone还有其他的SIP实现吗?
- 11. 到目前为止,除了Chrome实现的WebRTC之外,还有其他浏览器吗?
- 12. 处理iOS Exceptions除了Crittercism之外还有其他方法
- 13. 除了MediaPlayer以外,还有其他的Android mp3播放器吗?
- 14. 除了Windows上的C/C++之外,其他语言是否还有CScope样式的源浏览器?
- 15. 检测浏览器没有检查useragent
- 16. 除了kxmenu之外,iOS还有其他自定义弹出式菜单吗?
- 17. 除了使用浏览器之外,还有更好的方式来测试或调试Mod重写规则吗?
- 18. 除了使用循环之外,是否还有其他方式显示列表?
- 19. 除了使用Cursor之外,还有其他方法可以从SQLite数据库中获取数据吗?
- 20. 除了IE以外的其他浏览器的XML解析器
- 21. 除cron之外,还有其他方式可以定期执行SQL代码吗?
- 22. 除了双击之外,还有其他方式可以在iOS设计器中应用约束吗?
- 23. 除了EditorTemplate MVC之外,还有其他htmlAttributes 5.2
- 24. 除了MSXML以外,还有其他更好的IDOMImplementation吗?
- 25. 除了使用独立存储/数据库与AudioPlaybackAgents进行通信之外,还有其他方法吗?
- 26. 任何方式从safari或其他浏览器获取cookie?
- 27. 除委托之外还有其他协议用法吗?
- 28. 除了模拟持久任务之外,Thread.Sleep()还有其他用途吗?
- 29. 除了处理urlencode结果的编码之外,还有其他因素吗?
- 30. Faye除了实时活动供稿之外还有其他选项吗?
据我所知,这是唯一的方法...除非你想做一些测试,它支持哪些HTML标签来告诉IE版本 – Steve 2014-11-06 01:35:19