gpt4 book ai didi

internet-explorer - 通过对象/特征检测进行浏览器检测

转载 作者:行者123 更新时间:2023-11-30 10:49:09 26 4
gpt4 key购买 nike

我知道使用 userAgent 属性检测浏览器是一个糟糕的主意,因为浏览器会骗你,因为同一浏览器的不同版本可能具有不同的功能集,而 的值相同用户代理。功能检测绝对是真正确定您想要做的事情在浏览器中是否可行的方法。

我希望弄清楚的是,是否可以使用特征检测来弄清楚浏览器到底是什么。也就是说,识别用户代理具有的特定怪癖,然后确定哪个浏览器具有这些完全相同的怪癖。例如,如果浏览器没有定义 XMLHttpRequest 但定义了 ActiveXObject 那么我们就知道它将是 MSIE 6 或更低版本。

是否有此类识别怪癖的库或它们的列表以便我可以自己编写?

编辑:我并没有真正提供这背后的理由。我想升级一个收集网络应用程序使用统计信息的系统。它需要我弄清楚浏览器并且当前使用userAgent。我正在寻找更强大的东西。

最佳答案

既然您已经阐明了您真正要查找的内容(记录用于统计收集的实际浏览器类型,而不是网页编程),似乎所有浏览器的默认开箱即用行为都包含一个非欺骗性和唯一标识用户代理。因此,对于第一数量级,您应该确保您了解如何正确解释所有这些,因为这可能是您遇到的 99%。 Google 显示了一堆不同的用户代理列表。我喜欢 this one 的“浏览器”栏.您可以相当轻松地识别许多浏览器(Gecko、Webkit、MSIE、Presto)中的渲染引擎和版本,然后从那里决定您关心多少细节(例如,是 Firefox 还是 Camino)。每个浏览器都是开箱即用的唯一标识。只要有时间,您就可以编写尽可能详细的子浏览器标识。

然后,如果真的值得尝试识别使用虚假用户代理向您撒谎的浏览器,我会感到惊讶。如果您有 50 种不同浏览器的 30 种不同版本发布,那么在不依赖用户代理的情况下通过功能检测来尝试唯一标识每一种浏览器将是一项巨大的工作量。您必须建立一个定期更新的庞大测试数据库。而且,我不知道您是如何获得所有这些微小的修订来弄清楚如何为它们编码和/或测试它们的。

如果您只想确定哪些浏览器在其渲染引擎方面撒谎(例如,当它们实际上是 MSIE 时声称 Gecko)那么这可能是一个更简单的问题,因为您可以通过较少数量的功能测试(例如您为 IE6 确定的那个)。但是,这仍然是一项艰巨的任务。如果我这样做,我会从 IE 在每个主要版本中支持的一组专有内容开始,并针对这些内容进行测试。通常可以肯定地说,没有其他人支持大多数 IE 特定的东西,这些东西不可能成为标准。然后,我可能会在 Gecko 渲染引擎中寻找一些特定于 mozilla 的东西。现在,每个引擎都有自己的 CSS3 特定标签 -moz、-o、-ms、-webkit,这些标签几乎确定了它是哪个渲染引擎(对于以后的版本)。当这些标准最终确定时,这些最终会消失,但大多数浏览器将在很长一段时间内保持与其变体的向后兼容性(微软,可能永远)。

您可能可以研究一些使用大量特征检测的跨浏览器库,例如 Modernizer、YUI、jQuery 等...以获得其他想法。

关于internet-explorer - 通过对象/特征检测进行浏览器检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528457/

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