为什么不使用依赖于浏览器的 CSS?



例如,SO在加载时抛出超过50个CSS错误和警告,就像大多数流行的网站一样。

仅仅检测正确的浏览器并动态加载正确的CSS就很简单了。

我试图理解为什么这些错误/警告被大多数网站忽略?

即使解析无用的CSS对性能的影响可能在微秒范围内,这难道不是草率的编码吗?

两个原因:

  1. 不可能检测到浏览器在客户端使用的东西。您可以嗅探与请求一起发送的user-agent标头(如果存在的话),但它仅与浏览器制造商一样可靠。和用户(因为用户可以禁用或更改头值)—

  2. 使用浏览器特定的CSS、DOM或Javascript"特性"鼓励非标准实现。请参阅http://www.webstandards.org/了解为什么这很重要。你所建议的是回到web开发的"黑暗时代"

在你的页面上简单地失败或显示一个横幅要好得多,注意到客户端使用的浏览器是非标准的,并且考虑到浏览器是多么便宜—免费的!本;暗示如果用户有一个更好的浏览器,他们会有更好的网络体验。

Jon Postel(愿他安息)曾经说过,对于鲁棒性应用程序来说,应该严格控制它们发出的内容,并容忍它们接受的内容。早期的HTTP实现和早期的HTML渲染引擎对它们所能接受的东西是极端宽容的,这最终导致了浏览器大战,web浏览器实现了各种各样的非标准扩展,web服务器提供了各种各样的破碎的、格式错误的标记。我认为,如果浏览器制造商在接收非标准或格式错误的数据时抛出错误,我们的情况会好得多。

回答OPs的问题:

我试图理解为什么这些错误/警告被大多数网站忽略?

简短的回答是,因为标准规定了特定的行为。

参见CSS标准的第4.2节http://www.w3.org/TR/CSS21/syndata.html#parsing-errors。

最新更新