Skip to content
This repository was archived by the owner on Apr 25, 2026. It is now read-only.
This repository was archived by the owner on Apr 25, 2026. It is now read-only.

page --next/--prev 翻页时浏览器视口不会跟着滚动 #9

@4fuu

Description

@4fuu

Bug 描述

使用 page --next--prev 进行翻页时,CLI 输出的内容虽然切换到了目标页,但浏览器的实际视口位置并没有跟着滚动更新。

复现步骤

  1. 打开一个长页面
  2. 执行 browser-cli page <session-id> --next
  3. 观察浏览器视口 — 仍然停留在原位

原因分析

src/cli/commands.rs 第 209-242 行的 page() 函数:

  1. 第 223 行fetch_snapshot() 获取当前快照,浏览器视口位置不变
  2. 第 224-235 行 — 在 CLI 侧计算目标页码(resolved_page
  3. 第 239 行parse_page_from_snapshot() 按页码筛选内容并输出

整个流程只在 CLI 侧做了内容过滤,从未向浏览器发送滚动指令,因此浏览器实际视口始终不变。

作为对比,click() 等命令会先通过 send_ok(Request::new(actions::CLICK, ...)) 向浏览器发送动作,再获取更新后的快照,这是正确的模式。

修复方向

  1. src/protocol/messages.rs 中新增 SCROLL action 常量
  2. extension/src/content/content-script.ts 消息处理器中添加 SCROLL handler,执行 window.scrollTo()
  3. page() 函数中,计算出目标页对应的 scrollTop 后,先发送 SCROLL action 让浏览器实际滚动,再获取新快照并输出

涉及文件

  • src/cli/commands.rs (第 209-242 行)
  • src/protocol/messages.rs (action 常量定义)
  • extension/src/content/content-script.ts (消息处理器)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions