Published on

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

Authors
  • avatar
    Name
    ttyS3
    Twitter

系统版本: 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?

终于在so找到个答案: https://stackoverflow.com/questions/47401091/why-is-firefox-57-not-styling-my-option-elements-like-other-browsers/47401425#47401425

原来真正的答案在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 the color and background-color CSS 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>colorbackground-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下的主力浏览器。