高级页面查找(Tampermonkey 脚本)
一个增强版网页查找工具,在浏览器原生 Ctrl+F 之上提供了正则、布尔表达式、类型匹配、跨 iframe 搜索、实时增量刷新与结果侧边栏等能力。
功能特性
- 基础查找:子串 / 正则 / 全词匹配、大小写敏感、关键词高亮。
- 布尔表达式:支持
AND / OR / NOT 与括号分组,例如 (error OR warn) AND NOT debug。
- 类型匹配:
type:email、type:url、type:phone、type:date、type:num 等内置类型。
- 数字区间:
num:1-100、num:>50、num:<=0 等范围筛选(兼容括号分组)。
- 关键词限定:
kw:"精确短语" 锁定搜索词条,避免与类型/布尔运算符混淆。
- 中文分词:中文查询自动按词切分,提升命中准确率。
- 跨 iframe 搜索:自动探测并索引页面内嵌
iframe 的文本,支持跨文档定位与聚焦。
- 实时增量刷新:基于
MutationObserver,页面内容变动(加载更多、动态渲染)时自动更新结果,无需重新搜索。
- 结果侧边栏:列出所有命中项,点击直达;支持「下一个 / 上一个」在结果间跳转(
F3 / Shift+F3)。
- 搜索历史:保留最近查询,便于快速复用。
- 作用域限定:可通过 CSS 选择器限定搜索范围,聚焦目标区域。
更新日志
v1.6.0(本次更新)—— 修复页面乱跳问题
- 问题:搜索后只要滚动页面,就会被强制拽回到当前红框焦点位置,无法正常自行浏览页面。
- 根因:自动增量刷新(
incrementalRefresh)与 iframe 重新加载(frameCache.dirty)的重排路径会调用滚动定位逻辑,在用户滚动触发页面 DOM 变动(懒加载、虚拟列表、SPA 路由等)时反复把视口拉回焦点。
- 修复:
setActiveResult 新增 scroll 参数,仅当用户主动导航时才滚动并选中文本。
- 所有「自动重排」路径(增量刷新、
frameCache.dirty 重扫 iframe)改为 scroll: false,只更新高亮与侧栏选中态,不再抢占滚动焦点。
fullSearch 新增 scroll 参数,incrementalRefresh 的重排调用统一传 scroll: false。
revealVirtualTextNode 虚拟结果高亮支持 scroll 参数,非主动导航时不滚动、不抢文本选区。
- 现在的行为:只有在点击「查找」、下一处(F3)、上一处(Shift+F3)、或点击结果列表项时才聚焦到红框位置;除此之外无论怎么滚动页面都不会被拽回。
v1.5.0 —— 虚拟结果与高亮稳定性
- 新增纯
NOT 表达式的虚拟结果(无命中项时定位目标节点)。
- 修复切换虚拟结果时红色轮廓残留 / 叠加闪烁:
currentVirtualParent 跟踪当前高亮父节点,切换或清除时统一移除。
- 修复
clearAllRecords 与面板关闭时残留红框。
v1.4.0 —— 查询解析健壮性
- 修复空引号
"" / kw:"" 被解析为有效词条,污染解析与颜色配置。
- 修复大小写不敏感匹配时因 Unicode 大小写扩展(如
ß→ss)导致的截取 / 边界长度错误,改用小写化关键词长度计算匹配区间。
v1.3.0 —— 类型匹配与数字区间
- 新增内置类型匹配(
email / url / phone / date / num 等)。
- 新增数字区间语法
num:1-100、num:>50 等,支持与布尔表达式组合。
v1.2.0 —— 中文分词与短语限定
- 新增中文分词能力,中文查询按词匹配。
- 新增
kw:"..." 短语限定符,区分普通关键词与运算符 / 类型标记。
v1.1.0 —— 跨 iframe 与增量刷新
- 支持索引并搜索页面内嵌
iframe。
- 基于
MutationObserver 的增量刷新,内容变动时自动更新结果。
v1.0.0 —— 基础版本
- 子串 / 正则 / 全词查找、大小写敏感、关键词高亮。
- 布尔表达式(
AND / OR / NOT / 括号分组)。
- 结果侧边栏与「下一个 / 上一个」跳转。
安装与使用
- 安装 Tampermonkey 浏览器扩展。
- 将
高级页面查找.user.js 添加到 Tampermonkey。
- 在任意页面按下
Ctrl+F 唤起查找面板(覆盖原生查找)。
- 输入关键词或高级表达式,点击「查找」或回车执行;使用「下一个 / 上一个」或
F3 / Shift+F3 在结果间跳转。
快捷键
| 操作 |
快捷键 |
| 唤起 / 关闭面板 |
Ctrl+F |
| 下一处结果 |
F3 或 Enter |
| 上一处结果 |
Shift+F3 |
| 关闭面板 |
Esc |
AI写的,任何问题找ai,好的建议想法请评论留言我后续考虑加