长网页在 ChatLens 语镜里只读出首屏,多数情况不是内容不存在,而是读取范围跟着可视区域走:视口里只有首屏,后面的节点要么还没渲染,要么渲染了却没进入这一次读取。想把整页一次性读全,通常没有现成开关;更稳的做法是按屏滚动、每屏单独触发一次读取,把每屏输出分别留存,再按顺序拼接、回页面校对。
适用场景:长网页中段有一整段说明需要引用,但读屏输出总停在首屏。处理方向是分段读:一次滚动约一屏高度,每次只触发一次读取,输出按屏编号保存,再用两个不同位置的特征句交叉验证。验证方式是比对两次输出里是否各自出现对应特征句。边界:分段读只能说明读到了哪些节点,不能保证顺序和上下文完整,引用前仍需回页面核对原文。
确认首屏之后的内容到底有没有进入读屏范围
先分清两种失败:第一种是「没读到」,第二屏的内容还在懒加载或尚未渲染,读取时页面上根本不存在这些节点;第二种是「读到了但没输出」,读取命中了整页,输出却被截断或只保留了开头一段。两种情况要修的地方完全不同,所以先做一次带特征句的比对。
做法是取两句不容易重复的特征文本:在首屏某段小标题下的第一句取一句,记下前六到八个字;滚动到第二屏,同样取一句特征文本。触发读取两次,第一次不滚动直接触发,第二次滚到第二屏后触发,把两次输出分别存下来。
- 第一次输出只含首屏特征句,第二次输出仍只含首屏特征句:说明读取范围被视口限制,第二屏没被读到,按下一节做逐屏触发。
- 第二次输出同时含首屏和第二屏特征句:说明滚动后读取生效,问题在第一次没滚动,属于操作顺序问题。
- 第二次输出里第二屏特征句只出现半句或缺尾:说明读到了但输出被长度截断,需要改成按段摘取再读,见第三节。
- 第二次输出完全为空或报错:先确认页面是否还在加载,再确认触发点是不是落在了输入框之外。
把每屏结果记成一条记录,方便后面回看判断依据:
{
screen: 2,
scroll_top: 900,
marker: 第二屏特征句前六个字,
output_contains_marker: true
}
按屏滚动、逐段触发的操作顺序
核心是固定节奏:滚动、等页面稳定、触发一次读取、保存输出,然后重复。避免连续滚两三屏再触发,那样中间屏会被跳过,输出看起来只覆盖了首尾。
- 滚动距离按视口高度算,一次约 0.8 到 0.9 屏高,留一点重叠,防止某一段正好卡在两屏交界处被漏掉。
- 滚动后停留,等页面停止变化再触发。通常几百毫秒到一两秒,以懒加载图片、占位骨架屏消失为准,不要用固定等待硬扛。
- 每屏只触发一次读取,触发后先不要动页面,等输出完整落下来再记录。
- 保存方式:每屏输出存成独立文件或独立文档段落,命名带屏序号和该屏特征词,例如 screen-02-特征词.txt,拼接时按序号排。
- 滚动到底部后回看一次记录条数,应当和实际屏数接近;如果条数少于屏数,先怀疑滚动没生效。
如果页面主体不是浏览器默认滚动,而是内部容器滚动,直接滚窗口不会移动内容,这时要在控制台里替换滚动目标再试:
// 通用骨架:先确认滚动的是 window 还是某个容器
const step = Math.floor(window.innerHeight * 0.85);
// window 滚动
window.scrollTo({ top: step * n, behavior: "auto" });
// 容器滚动(把 sel 换成实际容器选择器)
document.querySelector(sel).scrollTop = step * n;
n 是第几屏。执行后用页面滚动条位置或容器的 scrollTop 值确认真的动了,这一步比看输出更快暴露问题。
把关键段落先摘出来再让工具读
内容太长、输出总是被截断时,与其整页读,不如先摘取。做法是在页面上手动选中目标段落,复制到空白窗口或本地文档里,再对这个窗口或文档触发读屏,读取范围就从整页变成一份短文本。
摘取之后范围变化很明确:读取对象不再是原网页的可视区域,而是一段选中的纯文本,首屏限制基本消失,输出完整度通常明显好于整页读。代价是丢失标题层级、列表编号和上下文,引用前要手动把所属小节标题、前后文补回去,免得一段话脱离原意。
另一种常见做法是只摘关键句而不是整段,让读屏输出短句后再对照原页面核对,适合只需要引用一两句的场景。摘取时建议保留段落首句和末句,中间省略部分做标记,避免拼接后读起来像原文连续段落。
用两段不同内容验证是否真的读到
分段读最容易出现的假象是:输出变长了,但只是显示了更多首屏内容,后面的屏并没有真正进入读取。所以要挑两段位置不同、用词不重复的内容做交叉验证,比如首屏一个标题里的词,加上页面中后段某个小节的专有名词。
- 两次输出中两个特征词都出现:说明两屏都被读到,分段读有效,可以继续按屏推进。
- 只出现首屏那个词:第二屏仍未进入读取范围,回到第一节排查滚动是否生效、内容是否按需渲染。
- 两个词都出现但顺序错乱:读取覆盖了内容但拼接顺序有问题,按屏序号重新排序,不要按输出先后拼接。
- 两个词都不出现:先确认特征词没有在复制时被截断或改写,再确认触发点是否真的在当前页面。
特征词仍未出现时的排查顺序:先看页面是否用独立滚动容器,滚窗口无效;再看是否有 iframe,读屏可能只覆盖外层框架;再看列表是否为虚拟滚动,未进入视口的行根本没生成节点;最后看输出长度是否被限制,把一屏改成半屏再触发一次对比。这几步都能在页面上直接观察,不需要额外工具,逐条排除后再决定是继续分段读还是改成摘取读。