浏览器检测很糟糕

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元免费积分!

这就是原因

它违背了网络标准的精神

网络标准存在的全部原因是为了让我们不必为特定环境编写特定代码。 我们应该编写符合既定标准的代码,负责显示我们代码的软件应该按照标准指示显示它。

它依赖于浏览器用户代理字符串

… 具有 极其糟糕的历史,并且很容易被欺骗。

它可能会阻碍设备

示例:您检测到 iPhone 并为其提供特殊内容。 现在 iPhone 永远无法像其他浏览器那样看到网页,尽管它完全有能力这样做。

那我们为什么要这样做呢?

我们这样做是因为不同的浏览器处理事情的方式不同,浏览器检测可以让我们摆脱困境,并使事情按预期工作。 你不能怪我们,对吧?

通常导致我们诉诸浏览器检测的情况令人愤怒。 但请记住,通常不是浏览器出了问题。 即使是 IE 6,在发布时也是当时最符合标准且最先进的浏览器。 而我们今天的一些标准当时还没有完善。

我们应该怎么做?

我第一个承认,现实世界的网页设计有时需要快速修复、预算可接受的解决方案,并确保功能按预期工作。 这并不总是允许做出利他主义的选择,而这些选择会排除一些功能,因为这是“正确的事”。

理想情况下…

… 我们将进行 **能力测试**。 这才是我们真正需要的 信息,对吧? 测试我们所在的 环境是否能够满足我们想要做的事情。 如果可以,就去做。 说起来容易做起来难,我敢肯定,我自己都不知道该从哪里开始。 但我相信你们中的一些人非常聪明,可以完成它(或者已经完成了它!)

更多

这里有一些关于 能力测试 的内容来自 Quirksmode。 这里还有 Dave Shea 的 一个很好的例子,说明了为什么浏览器检测不好。