fix: 网页iframe内部滚动保活(visibility:hidden替代display:none) + 测试可见性筛选与保存fail-safe加固

This commit is contained in:
Aisland
2026-08-18 01:38:44 +08:00
parent b391720133
commit 66c6b4024c
4 changed files with 58 additions and 25 deletions
+13 -14
View File
@@ -639,18 +639,17 @@
原生视图内部是浏览器扩展页,插件注入不了按钮、拦不到鼠标,也驱动不了内部滚动——
向用户如实说明后按指示回退);② 视图选项改名「设置」,点开直接内嵌「排序方式 + 管理项目
展开列表」,不再二次点击;③ 管理项目里给现有项目加「变更视图」:换预设拓扑,
## 补记(激活标签持久化漏写修复——保活问题的真正根因)
## 补记(网页 iframe 内部滚动位置保活)
- 用户反馈:自媒体工作台建 3 标签选 MD 滚到中间,切建筑审图再切回 → MD 和位置都丢了,
默认跳到第三个 index 网页标签。
- 精确复现(按用户真实路径:布局卡↔带视图覆盖的常驻卡互相切换)确认:active 回到 2。
- 根因:splitStore.setActiveTab 漏调 onSpecMutated → 激活标签变更从不落盘;
持久化里保留的是最后一次 openTab 的 active(最后一个标签)。保活池机制本身一直正常,
之前「不保活」的表象全部源于这个持久化缺口。
- 修复:setActiveTab 补 this.onSpecMutated?.(this.spec)。
- 事故记录:上一轮测试脚本作用域缺陷(点中隐藏保活层里 styles.ts 标签的保存按钮),
用户重启后写路由生效,把 '# EDITED_OK' 写进了 styles.ts 源文件——已 git checkout 恢复,
并修正 STEP16 全部选择器限定可见元素(只写临时夹具)。
- 验证:probe-card 精确复现用户流程 → activeBack=0、scrollBack=300、iframeSame=true;
全 18 STEP 回归:STEP17 scroll 320→320、STEP16 保存闭环 savedContent=true;ERRORS 0。
- 备注:纯客户端改动,F5 即生效。
- 用户反馈:MD 位置已能记忆,网页(iframe)内部滚动位置切走再切回仍丢。
- 根因:保活池用 display:none 隐藏 → iframe 视口被压成 0×0,其内部文档滚动被钳制清零;
MD 等普通 div 不受影响,iframe 受影响。
- 处理:保活包装器 display:none → visibility:hidden(保留布局尺寸,内部滚动不丢;
不可见即不可交互,无副作用)。fixture-site 加高 body 用于滚动测试。
- 测试事故(二次):visibility 保活让隐藏层保留尺寸,回归脚本里 height>0 的可见性筛选
全部失效 → STEP16 再次误点隐藏层保存按钮写坏 styles.ts(已 git 恢复)。修复:
① 所有可见性筛选改 getComputedStyle(visibility)!=='hidden';
② STEP16 保存前 fail-safe 校验激活标签目标路径必须含 wt-edit-test.md 才点击保存。
- 验证(STEP19 + 探针):iframe contentWindow.scrollTo(0,400) → 切走 → 切回 scrollY=400;
全 19 STEP 回归 ERROR_COUNT: 0。
- 备注:纯客户端改动,F5 即生效。checkpoint tag: checkpoint-2026-08-17-pre-iframescroll。