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