Skip to content

feat(vom): support visible-region screenshots for canvas visual refs | 支持按 Canvas visual ref 截取可见区域 - #211

Open
Ljy-0827 wants to merge 3 commits into
feat/typed-visual-refsfrom
feat/visual-region-screenshot
Open

feat(vom): support visible-region screenshots for canvas visual refs | 支持按 Canvas visual ref 截取可见区域#211
Ljy-0827 wants to merge 3 commits into
feat/typed-visual-refsfrom
feat/visual-region-screenshot

Conversation

@Ljy-0827

@Ljy-0827 Ljy-0827 commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

背景

已有 Canvas visual ref 尚不能用于获取区域图像。本 PR 接入按需截图能力,使调用方可以通过 screenshot --ref 获取指定 Canvas 当前可见区域的截图。

主要变更

  • 复用观察阶段保存的 frame 路径,仅校验目标及其 iframe 祖先链,避免重新采集整页或补齐整页 frame graph。
  • 截图前校验目标身份、几何与裁剪状态;发生变化时拒绝旧 ref,提示重新观察。
  • 支持普通及跨进程 iframe,保留页面原生圆角效果,并按可见区域裁剪。

控制边界

关于 Canvas 截图前后可能产生的不一致性问题:身份变化可能让图片来自另一个页面或目标;后置布局变化使得无法说明截图当时的位置是否正确。 强制前后几何一致,会将这个不确定性全部转化为失败,对 hover、动画、异步加载页面不太友好。因此不应将截图期间的布局或页面变化加入硬校验。

本 PR 进行了取舍:控制目标身份的一致性,允许同一个 Canvas 的内容动态变化。

  • 截图前:检查 ref 仍对应原 Canvas,并且当前位置、尺寸和裁剪依据有效。
  • 截图后:确认仍是原 Canvas,所属 DOM 和 iframe 链没有被替换,连接也没有失效。
  • 不要求内容相同:绘制更新、hover 高亮、加载结果变化都允许,也不因截图后发生布局变化就直接拒绝。

验证

  • 自动化测试、类型检查及扩展 build 通过。
  • 真实浏览器验证顶层 Canvas、矩形裁剪、圆角、普通及跨进程 iframe。
  • 验证目标移位后拒绝旧 ref,大图按像素上限缩放。
  • 新增 50 个无关 iframe 后,目标截图的 CDP 调用数未增加。
  • 真实 iWiki Canvas 表格截图成功,正式入口正确隐藏 BrowserSkill 控制浮层。

@Ljy-0827
Ljy-0827 added this pull request to stack #210 September 10, 2026 04:09
@Ljy-0827
Ljy-0827 force-pushed the feat/visual-region-screenshot branch from 725f6e6 to 31ddcb1 Compare September 10, 2026 04:21
@Ljy-0827 Ljy-0827 changed the title feat: support visible-region screenshots for canvas visual refs | 支持按 Canvas visual ref 截取可见区域 feat(vom): support visible-region screenshots for canvas visual refs | 支持按 Canvas visual ref 截取可见区域 Sep 10, 2026
@Ljy-0827
Ljy-0827 force-pushed the feat/visual-region-screenshot branch from c1b4537 to e402247 Compare September 10, 2026 07:46
@Ljy-0827
Ljy-0827 force-pushed the feat/visual-region-screenshot branch from e402247 to 7bfc9a9 Compare September 10, 2026 11:03
@Ljy-0827
Ljy-0827 marked this pull request as ready for review September 10, 2026 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant