issue: Unarchiving a chat in Archived Chats drops keyboard focus

在 Open WebUI 的“设置 > 归档聊天”中,用键盘按下某行的“Unarchive Chat”按钮后,该聊天被取消归档、所在行随即从列表中移除,键盘焦点随按钮一起消失并落到页面主体(BODY)上,导致下一次按 Tab 从头开始。优先排查的是:行被移除后是否主动把焦点转移到列表中的下一个“Un

快速结论:在 Open WebUI 的“设置 > 归档聊天”中,用键盘按下某行的“Unarchive Chat”按钮后,该聊天被取消归档、所在行随即从列表中移除,键盘焦点随按钮一起消失并落到页面主体(BODY)上,导致下一次按 Tab 从头开始。优先排查的是:行被移除后是否主动把焦点转移到列表中的下一个“Unarchive Chat”按钮。

适用环境:Open WebUI dev 分支(提交 63eed95c8);安装方式为 Git Clone;操作系统 Linux;浏览器 Firefox;Ollama v0.40.7;使用默认设置。

最快修复方案:暂无确认的一步修复方案。Issue 中未提供已验证的修复步骤或补丁,仅确认了问题现象与复现路径。

注意事项:该问题属于键盘可访问性缺陷,不影响鼠标操作,因此用鼠标点击“Unarchive Chat”不会察觉到异常。焦点恢复的具体实现方式(例如取消归档后由代码接管焦点、定位到下一行按钮)在 Issue 中未给出,需以后续修复提交为准。

问题场景

用户在 Open WebUI 中归档了若干聊天,然后进入“设置 > 归档聊天”页面,使用键盘(Tab 移动、Enter 触发)对某一行执行“Unarchive Chat”。该聊天被取消归档后,其所在行立即从列表中消失;此时页面没有把焦点移动到任何其他控件,浏览器只能把焦点回退到页面本身。

Issue 中给出的复现方式是:在浏览器开发者工具的 Console 中执行一段监听 keyup 的脚本,每次输出当前聚焦元素;当 Tab 定位到某行的“BUTTON Unarchive Chat”后按 Enter,控制台输出 BODY;再按 Tab,焦点从页面顶部重新开始。

报错原文

issue: Unarchiving a chat in Archived Chats drops keyboard focus

Expected: focus stays in the list, on the next chat's Unarchive Chat button.
Actual: Focus moves to the page body after the row is removed.
Console output: BODY

原因分析

可能原因是焦点管理缺失:取消归档操作触发列表重新渲染,被聚焦的按钮随其所在行一起从 DOM 中移除。浏览器在聚焦元素被移除时会把焦点回退到文档主体,而该流程没有在移除后主动把焦点设置到列表中相邻的“Unarchive Chat”按钮,因此键盘用户丢失当前位置。

Issue 中的相关 Issue 摘要也指出,侧边栏开合、听写启动等场景存在同类“聚焦控件消失后焦点丢失”的模式,说明这可能是该组件区域共性的焦点管理问题,而非单一按钮的偶发异常。

环境排查

  • 确认 Open WebUI 版本是否为 dev 分支提交 63eed95c8,或是否包含该提交之后的相关修复。
  • 确认访问的是“设置 > 归档聊天”页面,且列表中至少有两行以上已归档聊天,便于观察焦点是否落到下一行按钮。
  • 确认使用 Firefox 复现,并与其他浏览器对比,判断是否为浏览器差异。
  • 确认 Ollama v0.40.7 与默认设置下仍能复现,以排除模型或配置因素;该问题为前端交互问题,通常与 Ollama 版本无关。
  • 确认未安装会影响焦点或键盘事件处理的浏览器扩展。

解决步骤

  1. 按 Issue 步骤复现:归档若干聊天,进入“设置 > 归档聊天”。
  2. 在开发者工具 Console 中粘贴 Issue 提供的 keyup 监听脚本,观察当前聚焦元素的 tagName 与 aria-label。
  3. 用 Tab 移动到某行的“Unarchive Chat”按钮,确认控制台输出“BUTTON Unarchive Chat”。
  4. 按 Enter 执行取消归档,确认该行消失后控制台输出“BODY”,即焦点落到页面主体。
  5. 再按 Tab,确认焦点从页面顶部重新开始,验证焦点未被保留在列表中。
  6. 可优先尝试:检查是否已有包含该 Issue 修复的版本或提交(Issue 已于 2026-10-22 关闭,但讨论链中未提供具体修复提交),升级到包含修复的构建后再复测;若仍复现,在同类组件中排查取消归档后的焦点恢复逻辑。

验证方法

保持 Console 监听脚本运行,用键盘在“归档聊天”列表中连续取消归档多个聊天:每次行消失后,控制台应输出列表中下一个“Unarchive Chat”按钮,而不是“BODY”;随后按 Tab 应继续在列表内移动,而不是从页面顶部重新开始。若列表已无剩余行,焦点落在列表内合理位置或列表容器上也可视为改善,但需与修复实现对照。

参考来源

open-webui/open-webui #32908

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29687

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注