我一直在寻找一种使用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
这是网站开发人员和Web浏览器之间永无止境的战争的结果。
每次浏览器推出一项新功能时,开发人员都想使用该功能。但是他们还需要处理不支持它的浏览器。
最明显的方法是使用UA字符串。查找您知道支持该功能的浏览器,然后相应地运行您的代码。简单。
除非不是那么容易,否则不可避免地是几个月后其他浏览器才支持相同的功能。
因此,其他浏览器现在遇到了一个问题:网站被编写为使用其支持的功能,但是这些网站仅为一个特定的浏览器激活了该功能。
浏览器供应商的解决方案:修改其UA字符串,以使站点愚弄到激活功能。
自1990年代以来,IE和Netscape进行了“浏览器大战”(“ Mozilla”是Netscape唯一的UA字符串名称,因此其他所有人都将其复制到UA字符串中以实现兼容性),这种情况一直在发生。直到今天(发布IE11时,其UA字符串与IE10的UA字符串完全不同,这是专门为打破浏览器嗅探代码而进行的操作)。
最终结果是所有主要浏览器的UA字符串都是一团糟。它们充满了奇怪的东西,例如竞争对手的名称,不正确的版本号,多个版本号以及其他晦涩的引用,所有这些都旨在愚弄任何愚蠢的脚本以尝试读取它。是的,解析它并获得可靠的浏览器检测可能是可能的,但是任何一种浏览器发布新版本时,它都可能再次中断。
除此之外,大多数浏览器还提供配置设置,以使用户能够更改UA字符串,这使情况更加混乱。众所周知,某些第三方产品(防病毒,防火墙,代理等)也可以修改或替换UA字符串,所有这些使解析字符串得到可靠响应的可能性更低。
那么,所有这些带回家的信息是什么?
作为开发人员,最好的选择就是完全忽略UA字符串。出于任何实际目的,这对您几乎一文不值。如果需要使用并非所有浏览器都可用的功能,通常最好进行功能检测,而不是嗅探UA字符串(为此您可能要考虑Modernizr库)。
只是假装UA字符串不存在,那么您作为开发人员的生活就会容易得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句