- Published on
为什么 Firefox option 的 background-color 样式在 Linux 下不工作
- Authors

- Name
- ttyS3
系统版本: Fedora 32 Firefox版本: 76.0.1 (64-bit)
我偶然发现一个页面bug。Chromium下是显示正常的:

而Firefox下是这样的:

这个HTML代码看上去是没问题的:
<option style="background-color: black" value="Black">Black</option>
<option style="background-color: sienna" value="Sienna">Sienna</option>
然而background-color样式在Firefox下没有生效。
然后进行了一番搜索。
发现Firefox曾经确实是有这个bug [e10s] Properly style <option> elements in the parent process UI (support color and background on select options)
https://bugzilla.mozilla.org/show_bug.cgi?id=910022
首先,这个bug前面有个奇怪的e10s, 这个e10s老灯可是从来没听过,是什么意思呢? 然后发现它官方博客有解释 https://blog.mozilla.org/addons/2016/04/11/the-why-of-electrolysis/
原来在之前,Firefox一直是单进程的,在眼看着 IE8, Chrome 和 Safari 都相继转变成多进程后,Firefox意识到也需要进行这一转变。
而这个多进程架构的开发代号,就叫 Electrolysis, 简称e10s(这是惯用命名了,类似的例子比如l10n, i18n, k8s), e 和 s 之间隔着10个字母。
从这个bugzilla页面看,这个早在firefox54时就修复了啊。我现在用的是76了,怎么还有这个bug?
原来真正的答案在MDN https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option#Browser_compatibility
最底下,Browser compatibility 那里,有个下三角默认是折叠的(非常隐蔽,可以说,要不是stackoverflow上有人告诉我,基本上可能没机会看到)。
关键是这一句:
When Mozilla introduced dedicated content threads to Firefox (through the Electrolysis, or
e10s, project), support for styling<option>elements was removed temporarily. Starting in Firefox 54, you can apply foreground and background colors to<option>elements again, using thecolorandbackground-colorCSS properties. See bug 910022 for more information. Note that this is still disabled in Linux due to lack of contrast (see bug 1338283 for progress on this).
也就是说,虽然在Firefox 54 <option>的 color 和 background-color 就恢复正常工作了,但是在Linux版本的Firefox上,这两个属性依然是禁用的。 (由于bug 1338283)
现在已经是2020年了, 距离 e10s 已经 7年了, 距离bug 1338283被提出也已经3年了( Bug 1338283 Opened 3 years ago Updated 7 months ago ), 从Firefox54到现在Firefox71了还没修复Orz
Windows已经有基于Chromium内核的Edge了并且很好用了, 我相信大多数Windows用户应该没有太多理由再去用Chrome了(不开proxy连同步都不能工作), 更没有很好地理由来用Firefox.
而Mac默认已经内置了Safari, 即使用户不喜欢,大多数人很可能也是选择Chrome.
留给Linux用户的选择并不多,不能选Edge也不能选Safari,至少截止到目前,这两个浏览器都没有发布Linux版本。所以Linux要么选择Chromium(或闭源的Chrome), 要么选择Firefox.
其它小众浏览器这里不讨论。
像Fedora这种发行版,默认内置的浏览器就是Firefox. 因此, Firefox假如还没看清它真正的用户在哪里,我觉得有点替它担忧。 几年之后,或者,几十年之后,我还能用到Firefox吗?
声明:
本文没有任何贬低Firefox的意思。Firefox是个很优秀的浏览器,特别是自带的
Web开发控制台特别强大。老灯长期使用 Linux + Firefox, 虽然Chromium也是有在使用的,截止目前,Firefox依旧是老灯在Linux下的主力浏览器。