Chrome 硬件加速导致在有 discourse-calendar onebox 的地方(Windows 11)出现合成器光标不可见

Discourse 版本
2026.1.0-latest (c7e9cddb06)

浏览器
Chrome 143.0.7499.170 (官方版本) 64 位
(cohort: 144.0.7559.59 rollout)

操作系统
Windows 11 Home
版本 10.0.26200 (Build 26200)


摘要

启用 Chrome 硬件加速时,会出现 UI 问题:
Discourse 日历事件块被解析后,编辑器中的文本光标变得不可见(在白色背景上显示为白色)。
禁用 Chrome 中的硬件加速后,问题会立即消失。

这表明是Chrome GPU/合成器渲染问题与 Discourse UI 元素发生交互,而不是纯粹的 CSS 回归。


观察到的问题

:one: 编辑器光标变得不可见

  • 在新建主题和回复编辑器中都会发生。
  • 光标显示为白色/与背景融合,使得难以或无法看到输入位置。
  • 启用硬件加速时,间歇性但可重现。

值得注意的行为:

  • 立即打开 Chrome 开发者工具 (DevTools) 会使光标恢复正常渲染。
  • 这强烈表明是渲染/合成重计算,而不是状态或 CSS 更改。

:two: discourse-calendar 事件块在安全模式下无法正确显示(onebox)

启用硬件加速时:

  • /safe-mode 中,此行为会改变(意料之中,因为主题组件被禁用)。

复现步骤

  1. 在 Windows 11 上使用 Chrome,并启用“可用时使用图形加速”
  2. 打开运行 2026.1.0-latest 的 Discourse 站点
  3. 打开编辑器并开始输入
  4. 观察到不可见/白色的光标
  5. 插入或查看 discourse-calendar 事件块

不复现/诊断

  • :cross_mark:/safe-mode无法复现
  • :cross_mark: 在隐身模式下仍然复现(与扩展无关)
  • :cross_mark: 未配置自定义 CSS
  • :white_check_mark: 立即打开 Chrome 开发者工具即可修复光标问题
  • :white_check_mark: 完全禁用 Chrome 硬件加速可解决这两个问题

路径:

Chrome → 设置 → 系统 → 
[ ] 可用时使用图形加速

禁用后:

  • 光标正常渲染
  • 事件 onebox 行为正确
  • 无法复现问题

备注/假设

这似乎是Chrome GPU/合成器交互问题,可能涉及:

  • 文本输入/ProseMirror 中的光标渲染
  • 重绘时序或焦点层
  • 在加速合成下的 onebox 渲染/布局计算

以下事实强烈表明这是一个浏览器级别的渲染问题,而不是最近提交引入的 Discourse 回归:

  • 安全模式会改变行为
  • 打开开发者工具会触发即时更正
  • GPU 加速完全控制了可复现性

建议的调试方法

由于打开开发者工具会改变渲染行为,可能有帮助的是:

  • 使用远程开发者工具进行检查,而不是本地开发者工具
  • 从初始页面加载开始就打开开发者工具进行测试
  • 使用 --disable-gpu 比较行为
  • 查看受影响系统上的 chrome://gpu 输出

在问题激活时需要检查的关键元素:

  • 编辑器元素:
    • textarea.d-editor-input
    • .d-editor .ProseMirror
  • 计算出的光标渲染(caret-color、合成层)
  • Onebox 容器重绘时序

解决方法

对于受影响的 Windows 11 用户:

禁用 Chrome 硬件加速

这完全解决了编辑器光标问题和 discourse-calendar oneboxing 行为。

1 个赞