首页/新闻资讯/正文详情

自由窗口切回前台选中项变了:窗口焦点和业务焦点为什么必须分开

发布时间:2026/9/26 16:34:31 来源:云帆数科 栏目:资讯中心
自由窗口切回前台选中项变了:窗口焦点和业务焦点为什么必须分开
自由窗口切回前台选中项变了窗口焦点和业务焦点为什么必须分开两个自由窗口并排工作用户在左侧列表选中一条记录点击右侧浏览器查资料再切回应用列表高亮却跳到了第一项。官方自由窗口文档指出窗口被点击或触摸后会提升 Z 轴并获取焦点。窗口重新获得焦点是系统事实但它不等于用户重新选择了第一条业务数据。验证边界本文依据华为开发者官网截至 2026-09-25 可访问的资料整理。文中的状态机、去重器和坐标计算已经在 Node.js 宿主环境执行断言当前本机仍是 API 24 SDK且没有连接 HDC 真机因此不把这些断言写成 API 26 编译或真机实测。涉及窗口、拖拽和跨设备能力的正式交付仍需在 API 26 SDK、模拟器或对应真机上补齐接口编译、交互录像与日志证据。重复执行从哪里来很多页面把onWindowFocus、组件onFocus和业务 selectedId 绑在一起窗口激活就给第一个可聚焦元素焦点焦点回调又顺便更新选中项。鼠标点击标题栏、AltTab 返回或弹窗关闭都会触发这条链导致业务状态无故改变。必须分别复现窗口失焦、键盘焦点迁移和鼠标选中才能看清谁误写了 selectedId。幂等边界怎么定义建立三层状态windowActive 只控制动画和资源恢复keyboardFocusId 只服务键盘与无障碍导航selectedId 表示用户明确选择的业务对象。窗口重新激活时恢复上次键盘焦点但只有点击、Enter 或业务命令可以改变 selectedId。若原焦点元素已删除寻找最近合法焦点也不自动改业务选择。interface FocusState { windowActive:boolean; keyboardFocusId?:string; selectedId?:string } export function onWindowActive(s:FocusState,active:boolean):FocusState { return { ...s, windowActive:active }; } export function onKeyboardFocus(s:FocusState,id:string):FocusState { return { ...s, keyboardFocusId:id }; } export function onUserSelect(s:FocusState,id:string):FocusState { return { ...s, selectedId:id, keyboardFocusId:id }; }案例一点击窗口标题栏返回应用标题栏点击只让窗口激活不应触发列表第一项的业务选择。页面恢复资源后把键盘焦点放回之前的控件若用户没有继续操作详情区仍显示原 selectedId。日志应区分 WINDOW_ACTIVE 与 USER_SELECT。案例二选中项被删除后重新获得焦点业务层先明确 selectedId 失效并选择空状态或相邻项焦点层再寻找可聚焦控件。不要让焦点框移动反过来决定删除后的业务对象否则鼠标、键盘和屏幕朗读会产生不同结果。失败、重试与回滚观察项容易写错更可靠的处理窗口激活激活就选第一项只恢复资源和视觉状态键盘焦点焦点等于选中独立记录可导航控件业务选中任意 focus 回调都写入只接受明确用户意图异常恢复找不到焦点就清空页面分别修复焦点与业务状态三层状态分离后自由窗口、弹窗和多显示器切换都不会随意改业务选择。封装统一的状态迁移函数还能用事件序列测试 AltTab、鼠标和键盘三种路径。可复用门禁窗口激活不会修改 selectedId。键盘焦点与鼠标高亮含义明确。删除控件后分别恢复焦点和业务状态。日志标记焦点事件来源。触控、键鼠和屏幕朗读路径结果一致。官方资料与适用范围自由窗口简介多设备通用适配指南自由窗口让焦点变化变得频繁。只有把“窗口正在使用”“键盘在哪里”和“用户选了什么”分开任务才能在来回切换中保持连续。

相关推荐

自由窗口弹窗越缩越偏:锚点坐标、窗口坐标和屏幕坐标别混用
自由窗口弹窗越缩越偏:锚点坐标、窗口坐标和屏幕坐标别混用

自由窗口弹窗越缩越偏:锚点坐标、窗口坐标和屏幕坐标别混用 全屏时点击工具栏按钮,弹窗正好出现在按钮下方;把应用拖成自由窗口并移动到屏幕右侧,弹窗开始偏几十像素,连续缩放后甚至跑到另一个窗口上。问题通常不是弹… · 2026/9/26 16:34:31

GitHub Copilot 配 TaoToken:settings.json 骨架与连通性验证
GitHub Copilot 配 TaoToken:settings.json 骨架与连通性验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 16:34:18

Windows 上部署 OpenClaw:用 TaoToken 统一 Key 打通 API 通道的配置骨架
Windows 上部署 OpenClaw:用 TaoToken 统一 Key 打通 API 通道的配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 16:34:18

推荐 2 个牛牛的 AI 开源项目:Aider 与 MindsDB 配 TaoToken 实战
推荐 2 个牛牛的 AI 开源项目:Aider 与 MindsDB 配 TaoToken 实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 17:10:08

开源神器CC Switch:一个工具管理Claude/Codex/Gemini,TaoToken统一Key配置只需点一下!
开源神器CC Switch:一个工具管理Claude/Codex/Gemini,TaoToken统一Key配置只需点一下!

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 17:10:01

亲身测评 TaoToken Web Access:AI Agent 联网体验的配置与验证
亲身测评 TaoToken Web Access:AI Agent 联网体验的配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 17:09:55

AI学习之大模型如何连续工作超过24h:TaoToken 长程任务配置与上下文压缩实战
AI学习之大模型如何连续工作超过24h:TaoToken 长程任务配置与上下文压缩实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 17:09:55

学生宿舍管理系统:Python+SQL Server+Tkinter实战解析
学生宿舍管理系统:Python+SQL Server+Tkinter实战解析

简介:这套基于Python、SQL Server与Tkinter实现的学生宿舍管理系统源码包,精准面向高校计算机专业学生、课程设计者及Python桌面应用开发者,用于解决宿舍管理中学生信息维护、管理员权限分配、核酸检测记录追踪等典型需求。资源共21个文件&am… · 2026/9/26 17:09:47

SpringBoot接入DeepSeek-R1:Ollama本地部署与调用实践
SpringBoot接入DeepSeek-R1:Ollama本地部署与调用实践

简介:一套面向Java开发者的deepseek-r1本地免费调用示例工程,基于Spring Boot与Spring AI构建,目标是在不依赖云端服务的前提下,帮助中小型团队在本地环境中快速接入大模型能力,同时规避API调用费用与数据传输风险。压… · 2026/9/26 17:09:47

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码