Meta theme-color 未遵循当前配色方案

我上周又看了一下这个问题,并按照以下步骤重现了这个 bug:

  1. 将您的操作系统配置为使用深色模式(在 Windows 11 中,这可以在“设置”->“个性化”->“颜色”->“选择你的模式”中完成)。

  2. 在您的 Discourse 偏好设置 中,为常规模式和深色模式选择不同的配色方案,然后重新加载页面。

  3. 现在您应该会看到您为深色模式选择的配色方案在 UI 中生效(符合预期),但 theme-color 元标签将包含您为浅色模式选择的配色方案的 header_background 颜色值,而实际上应该是深色模式的颜色。

这个问题修复起来有点棘手,因为在服务器端——所有元标签都在那里渲染——我们无法得知客户端/浏览器将使用浅色模式还是深色模式配色方案。我们只包含浅色和深色方案的颜色定义,然后客户端/浏览器会根据 prefers-color-scheme 媒体查询选择与用户偏好匹配的那个。

不过,看起来 theme-color 元标签 接受 media 属性,所以我们应该能够为深色方案包含另一个 theme-color 元标签,并将 media 设置为 (prefers-color-scheme: dark)。我这周会尝试完成这个。

5 个赞