你有没有想过,为什么同一个网页在不同浏览器里显示效果可能不一样?Den Odell 在一篇深入分析中揭示了其中一个重要原因:Safari 和 Firefox 都在代码中内置了对大网站的特殊处理,而 Chrome 却完全不需要这些“变通方案(workaround)”。
具体来说,Firefox 有一个 about:compat 页面,Safari 的代码库里有一个 Quirks.cpp 文件,里面包含了数千行针对特定域名的渲染修正代码。这些代码专门针对 TikTok、Netflix、Instagram 等大网站,处理它们在非 Chrome 浏览器上可能出现的兼容性问题。Den Odell 指出,这些修正不是 bug 修复,而是浏览器主动为这些网站"开小灶"。

这背后反映的是一个关于浏览器生态的深刻问题:Chrome 的市场份额太大了,大到开发者在开发时首先以 Chrome 为目标进行测试和优化。Chrome 的行为因此成了事实上的 web 标准。当一个网站在 Chrome 上正常显示但在 Safari 上出问题,开发者第一反应往往是"Safari 有问题"而不是"我们的代码有问题"。这种认知偏差进一步强化了网站优先适配 Chrome 的行为模式。
而对于 Safari 和 Firefox 来说,如果完全不处理这些兼容性问题,它们的用户在访问这些主流网站时体验就会明显差于 Chrome 用户。于是它们被迫在浏览器代码里内置这些针对性的修正,成了一种逆向激励的循环。结果就是:Chrome 越流行,网站越优先适配 Chrome,Chrome 的兼容性问题越少,其他浏览器的兼容性问题越多。

Den Odell 建议开发者定期在非 Chrome 浏览器中进行测试,确保自己的代码不依赖这些浏览器内置的 workaround。他说,如果你只在 Chrome 里测试通过就在其他浏览器里出了问题,那很可能你的代码已经在不知不觉中依赖了某些只有 Chrome 才有的行为。这对于追求真正跨浏览器兼容性的团队来说很有价值。
从更宏观的视角看,这种现象揭示了 web 标准化的一个悖论:真正的标准应该与实现无关,但事实上的标准却往往由市场领导者决定。HTML、CSS、JavaScript 都有官方标准,但这些标准存在模糊地带,而模糊地带的实际行为往往由 Chrome 决定。这是一个值得整个 Web 开发者社区思考的问题。
来源:Den Odell (https://denodell.com/blog/browsers-treat-big-sites-differently)