gpt4 book ai didi

javascript - Javascript 中的浏览器检测 --- 错误?

转载 作者:数据小太阳 更新时间:2023-10-29 03:48:17 24 4
gpt4 key购买 nike

这是检测器:http://w3schools.com/js/tryit.asp?filename=try_nav_all

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

这里是代码和不同的输出,如果你感兴趣的话:

代码:

document.write("Browser CodeName: " + navigator.appCodeName);
document.write("<br /><br />");
document.write("Browser Name: " + navigator.appName);
document.write("<br /><br />");
document.write("Browser Version: " + navigator.appVersion);
document.write("<br /><br />");
document.write("Cookies Enabled: " + navigator.cookieEnabled);
document.write("<br /><br />");
document.write("Platform: " + navigator.platform);
document.write("<br /><br />");
document.write("User-agent header: " + navigator.userAgent);

Chrome 输出:

Browser CodeName: Mozilla

Browser Name: Netscape

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

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10

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

网景输出:

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) 那样直接,但通常是可行的。 Juriy Zaytsev ( kangax ) 有 a great list特征检测的东西。

(旁注:几乎 所有 浏览器都声称(在某种程度上)它们是“Mozilla”,因为一些网站很容易在首选 Netscape 浏览器(是的,很久以前)到 Microsoft 浏览器,并进行浏览器检测以进行检查。)

关于javascript - Javascript 中的浏览器检测 --- 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4523052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com