例如,SO 在加载时会抛出 50 多个 CSS 错误和警告,就像大多数流行网站一样。
简单地检测正确的浏览器并动态加载正确的 CSS 会很简单。
我试图理解为什么大多数网站都会忽略这些错误/警告?
尽管解析无用 CSS 的性能损失可能在微秒范围内,但这不只是草率的编码吗?
例如,SO 在加载时会抛出 50 多个 CSS 错误和警告,就像大多数流行网站一样。
简单地检测正确的浏览器并动态加载正确的 CSS 会很简单。
我试图理解为什么大多数网站都会忽略这些错误/警告?
尽管解析无用 CSS 的性能损失可能在微秒范围内,但这不只是草率的编码吗?
两个原因:
在事物的客户端上检测正在使用的浏览器是不可能的。您可以嗅探user-agent
随请求发送的标头(如果存在),但它仅与浏览器制造商和用户(因为用户可以禁用或更改标头值)允许它一样可靠。
使用特定于浏览器的 CSS、DOM 或 Javascript “功能”会鼓励非标准实现。请参阅http://www.webstandards.org/了解为什么这很重要。您的建议是回归 Web 开发的“黑暗时代”。
最好在页面上简单地失败或显示横幅,指出客户端使用的浏览器是非标准的,并且考虑到浏览器的便宜程度——免费!— 暗示如果用户获得更好的浏览器,他们将在网络上获得更好的体验。
Jon Postel(愿他安息)曾经说过,为了健壮性,应用程序应该严格限制它们发出的内容并容忍它们接受的内容。早期的 HTTP 实现和早期的 HTML 渲染引擎对他们将接受的内容具有极端的容忍度,这最终导致了伟大的浏览器大战,Web 浏览器实现了各种非标准扩展,而 Web 服务器则提供了各种损坏、格式错误的服务标记。我会争辩说,如果浏览器制造商在接收非标准或格式错误的数据时简单地抛出错误,我们会做得更好。
针对 OP 的问题:
我试图理解为什么大多数网站都会忽略这些错误/警告?
简短的回答是因为标准规定了这种特定的行为。请参阅http://www.w3.org/TR/CSS21/syndata.html#parsing-errors上的 CSS 标准第 4.2 节。