功能指南
本指南记录了 Nvirya AdGuard v11.7.0 中所有面向用户的功能、控件与键盘快捷键。文中所有界面名称均与脚本内置的简体中文(TRANSLATIONS['zh-CN'])及英文(TRANSLATIONS.en)标签完全一致。
1. 快捷悬浮按钮 (FAB) 与键盘快捷键#
功能说明#
快捷悬浮按钮是一个渲染在顶层窗口(window.self === window.top)独立 Shadow DOM 容器(<div data-nvirya-ui>)中的浮动护盾图标(46×46 px)。它提供一键打开 Nvirya AdGuard X 控制面板的入口,并在右上角通过状态圆点指示当前防护状态:
- 绿色圆点(
data-state="ok"): 当前网站防护已启用。 - 橙色圆点(
data-state="warn"): 当前会话已暂停过滤,或当前域名位于白名单中。 - 灰色圆点(
data-state="off"): 全局智能护盾(config.enabled)已关闭。
当控制面板关闭且连续 3,000 ms(3 秒)无交互时,悬浮按钮会进入 idle(空闲)状态,自动半隐藏吸附到屏幕左边缘或右边缘(translateX(±58%) scale(0.92),opacity: 0.42)。当视频或页面元素进入全屏模式(fullscreenchange)时,悬浮按钮会自动隐藏。
如何激活与操作#
- 触控 / 鼠标: 点按或点击快捷悬浮按钮。在触屏设备上,如果按钮处于半透明吸附(
idle)状态,第一次点按会先唤醒按钮(resetFabIdle),防止滑动页面时误触打开菜单;唤醒后再次点按即可打开控制面板。您可以沿屏幕左右边缘上下拖动按钮调整位置(保存在nvirya_x_fab中)。 - 键盘快捷键(
Alt+A): 在任意页面按Alt+A即可切换控制面板的打开与关闭,即使已在设置中关闭了快捷悬浮按钮显示也同样有效。 - 用户脚本管理器菜单: 在脚本管理器的扩展菜单中选择
Open Control Panel (Alt+A)。 - 关闭面板: 点按背景遮罩、点按右上角关闭(
×)按钮、按Escape键,或在窄屏移动设备(宽度≤ 640 px)上向下滑动底部面板。
如何隐藏或恢复悬浮按钮#
- 在设置标签页中切换快捷悬浮按钮(“自动吸附到屏幕边缘”)开关。
- 如果您在不支持
GM_registerMenuCommand菜单的移动浏览器上隐藏了悬浮按钮,仍可通过外接键盘按Alt+A或在用户脚本管理器中重置脚本存储来恢复。
2. 防护统计与本周活动#
位于概览标签页顶部:
- 模式切换(
本页/累计): 在当前标签页会话计数(stats.session)与持久化存储在nvirya_x_stats中的累计计数(stats.lifetime)之间切换四个统计卡片。每个卡片底部还会显示另一模式的数值(累计:...或本页:...)。 - 四个统计指标:
- 广告(“已清理”):移除广告节点、拦截广告脚本或处理视频广告时递增。
- 已隐藏元素:通过
[data-nvirya-hidden]隐藏元素、解除点击陷阱或应用手动选择器规则时递增。 - 已拦截弹窗:拦截
window.open调用或新标签页广告劫持点击时递增。 - 已拦截跟踪器:拦截发往广告/跟踪器 URL 的
fetch、XMLHttpRequest、sendBeacon、<img>或<script>请求时递增。
- 本周活动(
一–日): 显示本周 7 天内广告 + 已隐藏元素总数的柱状图(在nvirya_x_weekly_history中最多保留 14 天历史记录)。点按本周任意已过去的日期柱即可在图表右上角查看当日统计详情。
3. 允许此网站与本次会话暂停#
位于 概览 → 快捷操作:
| 防护启用时的按钮名称 | 防护暂停时的按钮名称 | 生效范围与存储键 |
|---|---|---|
| 允许此网站 (“暂停对当前域名的过滤”) | 恢复此网站的防护 (“重新启用此域名的广告过滤”) | 对当前域名及其子域名持久生效,跨浏览器重启保留(nvirya_x_whitelist) |
| 本次会话暂停 (“关闭标签页前停用过滤”) | 恢复本次会话防护 (“立即重新启用过滤”) | 保存在 nvirya_x_session 中,仅对当前域名生效直至手动恢复 |
暂停或允许网站时会立即发生什么#
点按上述任一按钮都会立即触发 refreshProtection() → restorePageWhenDisabled(),无需刷新页面即可恢复页面状态:
- 在
<html>上设置window.__NVIRYA_DISABLED__ = true与data-nvirya-disabled="1",使主世界fetch钩子直接放行后续请求。 - 还原所有反广告拦截弹窗隐藏操作与滚动锁定覆盖(
AntiAdblockEngine.revertAll())。 - 停止视频广告监听并恢复视频原有音量与倍速(
stopVideoAdProtection())。 - 断开 DOM MutationObserver 并禁用
<style data-nvirya-cosmetic>与<style data-nvirya-site-rules>。 - 恢复被解除点击陷阱元素的内联样式(
state.disarmedNodes),移除[data-nvirya-hidden]属性,并将state.removedNodes中记录的已移除节点重新插回原父节点。
限制说明: 在
document-start阶段已被阻止执行的脚本或元素,需要刷新一次页面才能重新运行其原始初始化代码。
4. 隐藏页面元素(元素选择器)#
功能说明#
隐藏页面元素(“点按或滑动即可隐藏任意元素”)启动交互式可视化选择器,包含蓝色高亮边框、元素标签/类名徽章以及底部浮动工具栏。
如何启动#
- 打开 概览 → 快捷操作 → 隐藏页面元素,或
- 在用户脚本管理器菜单中选择
Select the element to block (Picker)。
当选择器激活时,window.open 会被锁定(state.pickerActive = true),页面点击与触摸事件在捕获阶段被拦截,确保点按广告或链接时只会选中元素而不会发生页面跳转。
工具栏控件与触控手势#
点按页面上的任意元素后,选择器会构建祖先节点链(buildPickerChain,最多向上 7 层,在 <body> 与 <html> 前停止)并启用工具栏:
- 深度滑块(
层级 {current}/{total}): 左右拖动水平滑块,在当前选中的子元素(层级 1/...)与其父级容器之间平滑切换。 - 扩大: 向上切换一层至父元素(
traversePicker(-1))。 - 缩小: 向下切换一层至子元素(
traversePicker(1))。 - 隐藏元素: 为当前高亮元素生成唯一 CSS 选择器(
makeSelector),弹出确认框(`隐藏此元素?
{sel}),将规则保存至 nvirya_x_site_rules[hostname]` 并立即隐藏该元素。
- 全部隐藏 ({count}): 仅当
makeSimilarSelector在页面上找到 2 个及以上共享相同标签与稳定 CSS 类名的元素时显示。确认后(隐藏所有匹配元素 ({sel})?)可一次性隐藏所有同类元素。 - 触屏滑动 / 甩出隐藏手势(Swipe / Fling): 在触屏设备上选中高亮元素后,您可以直接在高亮元素上快速滑动(距离
> 60 px或速度> 0.4 px/ms)。元素会以旋转飞出动画消失(triggerPickerFling)并自动保存隐藏规则,无需弹出确认框(若选中元素属于受保护的视频播放器,则会提示:“该元素属于视频播放器,隐藏后可能中断播放。是否继续?”)。 - 取消(或按
Escape键): 退出选择器且不保存任何更改。
5. 本站过滤规则#
位于 概览 → 快捷操作 → 本站过滤规则(“管理此网站的自定义隐藏元素”):
- 打开弹窗列出当前
hostname保存的所有自定义 CSS 选择器。 - 点按任一选择器右侧的红色关闭(
×)按钮即可删除该条规则(removeSingleRule),并立即在页面上恢复显示对应元素。 - 若要一次性清空当前网站的所有自定义规则,请前往 关于 → 存储与更新 → 清除本站规则。
6. 连接日志#
位于 概览 → 快捷操作 → 连接日志(“查看并拦截第三方域名”):
- 显示内容: 展示当前页面会话期间记录的第三方域名(包括
networkRingBuffer中最多MAX_NET_BUFFER = 80条最近的fetch、xhr、beacon、script和img请求,加上scanStaticDomResources()扫描到的最多 300 个跨源静态<script>、<iframe>、<img >元素),以及您此前手动拦截的域名。 - 操作控件:
- 搜索框(
筛选域名...): 按主机名或示例 URL 实时过滤列表。 - 筛选标签(
全部/已拦截): 在全部第三方域名与仅已拦截域名之间切换。 - 拦截 / 允许按钮: 点按拦截会将域名加入
nvirya_x_custom_blocked、更新<style data-nvirya-cosmetic>并立即清理页面上匹配的 DOM 节点(purgeCustomBlockedDom)。点按允许可移除自定义拦截域名。 - 内置徽章: 被内置规则(
RE_AD_HOST、RE_GAMBLING_HOST或RE_SUSPECT_TLD)拦截的域名会显示禁用的内置按钮;若需在特定网站放行内置规则,请使用本次会话暂停或允许此网站。 - 清除会话日志: 清空内存中的当前会话请求列表。
- 搜索框(
7. 清理残留框架、预览原始页面(3 秒)、解除页面滚动锁定与撤销#
- 清理残留框架(“立即折叠空白广告占位”):查找最多 200 个匹配
[id^="google_ads_"], ins.adsbygoogle, iframe[src*="googlesyndication"], iframe[src*="doubleclick"]的元素(跳过视频播放器)并标记data-nvirya-hidden="clean",同时运行handleAntiAdblock()。 - 预览原始页面(3 秒)(“临时显示被隐藏的元素 3 秒”):临时禁用
<style data-nvirya-site-rules>与<style data-nvirya-cosmetic>持续3,000 ms,随后自动恢复过滤。注意:该功能仅揭示被 CSS 隐藏的元素,不会重建已从 DOM 树移除的节点(若需完整恢复已移除节点,请使用本次会话暂停)。 - 解除页面滚动锁定(“恢复被隐藏遮罩锁定的滚动”):在
<html>与<body>上强制设置overflow: auto !important并重置position: fixed。 - 撤销 (Ctrl+Z)(“恢复最近隐藏的元素”):可在面板中点按,或在面板与选择器关闭且未处于输入框焦点时按
Ctrl+Z(macOS/iPadOS 上为Cmd+Z)。优先弹出并移除当前站点最近添加的一条自定义 CSS 规则;若当前站点无自定义规则,则从state.removedNodes(上限 200 条)中恢复最近被自动移除的 DOM 节点。
8. 设置标签页控件#
在设置标签页中,您可以自定义外观、语言和防护模块:
- 外观主题(
自动|浅色|深色): 控制 Shadow DOM 面板与弹窗的配色方案(也可通过面板顶部的太阳/月亮图标快速切换)。 - 界面语言(
自动|EN|VI|中文): 在自动跟随浏览器语言、英文(en)、越南语(vi)与简体中文(zh-CN)之间实时切换。 - 防护开关:
- 智能护盾(“拦截弹窗、跳转和隐形陷阱”):总开关,同步控制
enabled、popupProtection、redirectProtection与cosmeticFiltering。 - 视频保护(“优化视频播放器并自动跳过广告”):控制
playerProtection(默认:开启)。 - 深度网络过滤(“严格拦截跟踪和统计域名”):控制
strictMode(默认:关闭)。开启后会额外拦截匹配RE_TRACKER的统计分析域名,并将 DOM 启发式隐藏阈值降低至单信号(signals >= 1)。 - 快捷悬浮按钮(“自动吸附到屏幕边缘”):显示或隐藏浮动护盾按钮(
showFloatingButton)。 - 绕过反广告拦截(“绕过新闻网站的反广告拦截墙”):控制
antiAdblock(默认:开启;在 iOS WebKit 沙盒隔离无法注入主世界脚本时自动禁用)。
- 智能护盾(“拦截弹窗、跳转和隐形陷阱”):总开关,同步控制