排查客户端内网页布局抖动 #250
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
浏览器内打开正常,但是客户端内会疯狂抖动。
工程在附件,自取
已开始排查。初步从附件工程和当前实现定位到一个尺寸反馈环风险:运行视窗根据 iframe 上报的内容宽高改写 iframe viewport;注入的尺寸桥又在新 viewport 下重新测量并继续上报。附件页面使用
body { min-height: 100vh },当前宿主虽然过滤重复尺寸和陈旧 viewport,但仍会接受“当前适配 viewport 下变化的内容尺寸”,缺少保证收敛的约束,因此可能在两个高度之间反复调整。计划:
100vh/ 响应式布局的真实收敛回归,记录每轮 viewport、content size 和宿主 fit 决策;对应需求表已登记,开发分支将使用
fix/preview-iframe-resize-loop。修复已推送到 PR #252,最新提交为
9599abb66。本次处理不只修复 Issue 原始录屏中的“预览静止后在两个缩放档位之间反复调整”,还补充修复了拖动客户端窗口时的闪烁:此前
ResizeObserver每次收到容器尺寸变化都会清空已测内容尺寸和 viewport 观察值,使 iframe 在拖动过程中反复经历“恢复原生尺寸 → 再次 fit”;现在窗口 resize 期间保留当前内容尺寸和已观察 viewport,只按新的可用空间连续重算缩放,preview URL 切换时才重置。验证结果:
LocalGamePreviewFrame组件级测试确认容器从800×500调整到1000×600时,iframe 不会恢复到原生高度;git diff --check均通过;gameagent-2873e5ac做浏览器宿主收敛验证:初始反馈环收敛,容器 resize 后 fit 连续变化,没有再切回1:1。请重点验收两种场景:进入运行预览后静置,以及持续拖动客户端窗口边缘改变窗口大小。