Vin*_*iro 2 opera internet-explorer user-agent mozilla google-chrome
我正在寻找一种用JavaScript识别IE的方法,突然间,我注意到浏览器被识别为Mozilla:
Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/30.0.1599.101 Safari/537.36 OPR/17.0.1241.53
Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/31.0.1650.57 Safari/537.36
Mozilla/5.0(兼容; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
现在我想知道为什么这个浏览器被识别为Mozilla
这是网站开发人员和网络浏览器之间永无止境的战争的结果.
每当浏览器推出新功能时,开发人员都希望使用该功能.但他们也需要处理不支持它的浏览器.
最明显的方法是使用UA字符串.查找您知道支持该功能的浏览器,并相应地运行您的代码.简单.
除了它并不那么容易,因为不可避免地发生的事情是几个月后其他浏览器支持相同的功能.
所以现在其他浏览器都有问题:站点被编写为使用它们支持的功能,但这些站点仅激活一个特定浏览器的功能.
浏览器供应商的解决方案:修改其UA字符串,以便欺骗网站激活该功能.
这种事情已经持续了自20世纪90年代,当IE和Netscape打的"浏览器大战"("Mozilla的"是Netscape的独特的UA字符串名称,所以每个人都复制成它们的UA字符串的兼容性),并一直持续到今天(当IE11发布时,它的UA字符串与IE10的UA字符串完全不同,这是专门为了打破浏览器嗅探代码而完成的).
最终结果是所有主流浏览器的UA字符串完全混乱.它们充满了奇怪的东西,比如竞争对手的名字,不正确的版本号,多个版本号以及其他模糊的引用,都旨在愚弄任何愚蠢的脚本来尝试阅读它.是的,可能只是可以解析它并获得可靠的浏览器检测,但是一旦任何浏览器发布新版本,它可能会再次破坏.
最重要的是,为了增加混乱,大多数浏览器还提供配置设置,以便用户能够更改UA字符串; 已知一些第三方产品(防病毒,防火墙,代理等)也可以修改或替换UA字符串,所有这些都使得解析它的可靠性更低.
那么这一切的主要信息是什么呢?
作为开发人员,您最好的方法就是完全忽略UA字符串.对于任何实际目的,它几乎毫无价值.如果您需要使用可能并非在所有浏览器中都可用的功能,通常最好不要进行功能检测,而不是嗅探UA字符串(您可能需要考虑Modernizr库).
只是假装UA字符串不存在,作为开发人员的生活将变得更加轻松.
| 归档时间: |
|
| 查看次数: |
1223 次 |
| 最近记录: |