Javascript中的浏览器检测——错误?

Javascript中的浏览器检测——错误?,javascript,browser,browser-detection,Javascript,Browser,Browser Detection,这是探测器: 在Chrome、Firefox、Safari和Netscape中,它始终显示浏览器代码名为Mozilla,浏览器名称为Netscape。这不应该根据浏览器而改变吗 以下是代码和不同的输出,如果您感兴趣: 代码: FIREFOX输出: Browser CodeName: Mozilla Browser Name: Netscape Browser Version: 5.0 (Windows; es-ES) Cookies Enabled: true Platform: Win

这是探测器:

在Chrome、Firefox、Safari和Netscape中,它始终显示浏览器代码名为Mozilla,浏览器名称为Netscape。这不应该根据浏览器而改变吗

以下是代码和不同的输出,如果您感兴趣:

代码:

FIREFOX输出:

Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; es-ES)

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 
SAFARI输出:

Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
NETSCAPE输出:

Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; en-US)

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)

也许应该,这取决于他们想要实现什么

但它只是说明了为什么浏览器检测已经声名狼藉,支持特征检测。浏览器检测代码的老化速度非常快。另一方面,特征检测是相当永恒的

例如:我可以检查浏览器是否为IE,如果是,则假定浏览器没有
Array.prototype.indexOf
。但后来IE9出现并添加了它,但就像一个杯子一样,我仍然在使用我自己的版本,因为我认为“IE”没有它。最好是在我正在运行的实现中实际检查它是否存在,而不太关心它是什么品牌。当然,特征检测将与我从未听说过的浏览器一起工作;浏览器检测将失败,并依赖于某些完全任意的“默认设置”

有时它不像做一个
if(Array.prototype.indexOf)
那样简单,但通常是可能的。juriyzaytsev()拥有大量的特征检测功能

(旁注:几乎所有的浏览器(在某种程度上)都声称自己是“Mozilla”,因为一些网站很容易使用微软的首选Netscape浏览器(是的,很久以前),并且正在进行浏览器检测来检查。)

首先,我发现它是一块真正的宝石,可能会比你现在使用的更好

用户代理字符串几乎总是以“Mozilla”开头:

基于上述内容,Web浏览器使用的非官方格式如下:Mozilla/[version]([system and browser information])[platform]([platform details])[extensions]

但是,为了解释为什么所有浏览器都声称自己是“Mozilla”,你必须回到上世纪90年代的浏览器大战。。。发件人:

[…]然后出现了一种新的网络浏览器,称为“Mozilla”,是“Mosaic Killer”的缩写,但Mosaic并不觉得有趣,所以公众名称改为Netscape,Netscape称自己为Mozilla/1.0(Win3.1)[…] […]微软变得不耐烦了,不想等待网站管理员了解IE并开始发送框架,因此Internet Explorer宣布它与“Mozilla兼容”,并开始模仿Netscape,称自己为Mozilla/1.22(兼容;MSIE 2.0;Windows 95),[…] 微软出售了带有Windows的IE,使其优于Netscape,第一场浏览器战争在这个国家的表面上肆虐。瞧,网景公司被杀了,微软公司也欢欣鼓舞。但网景公司后来改名为Mozilla,Mozilla创建了Gecko,并自称为Mozilla/5.0(Windows;U;Windows NT 5.0;en-US;rv:1.1)Gecko/20020826,Gecko是渲染引擎,Gecko很不错。Mozilla变成了Firefox,并自称为Mozilla/5.0(Windows;U;Windows NT 5.1;sv SE;rv:1.7.5)Gecko/20041108 Firefox/1.0,Firefox非常出色。Gecko开始大量增加,其他使用其代码的浏览器也诞生了,他们称自己为Mozilla/5.0(Macintosh;U;PPC Mac OS X Mach-O;en-US;rv:1.7.2)Gecko/20040825 Camino/0.8.1,和Mozilla/5.0(Windows;U;Windows NT 5.1;de;rv:1.8.8)Gecko/20071008 SeaMonkey/1.0,每个人都假装成Mozilla,它们都是由壁虎驱动的。[...] 你应该读整篇文章,它既有启发性又有趣。但是很长很长的一段时间,你需要解析用户代理字符串,因为他们几乎都说“Mozilla/something”

w3s很糟糕。帮自己一个忙,看看MDC:
Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; en-US)

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)