Hướng dẫn tính năng

Tài liệu này mô tả chi tiết toàn bộ tính năng, nút điều khiển và phím tắt có trong Nvirya AdGuard v11.7.0. Tất cả tên nút dưới đây khớp chính xác với bộ nhãn tiếng Việt (TRANSLATIONS.vi) và tiếng Anh (TRANSLATIONS.en) trong mã nguồn.

1. Nút thao tác nhanh (FAB) và Phím tắt bàn phím#

Chức năng#

Nút thao tác nhanh là biểu tượng chiếc khiên nổi (46×46 px) được vẽ bên trong vùng chứa Shadow DOM cô lập (<div data-nvirya-ui>) ở khung trình duyệt chính (window.self === window.top). Nút này giúp mở nhanh bảng điều khiển Nvirya AdGuard X và hiển thị chấm tròn trạng thái ở góc trên bên phải:

  • Chấm xanh lá (data-state="ok"): Bảo vệ đang hoạt động trên trang hiện tại.
  • Chấm cam (data-state="warn"): Bộ lọc đang tạm dừng cho phiên hiện tại hoặc tên miền đang nằm trong danh sách cho phép.
  • Chấm xám (data-state="off"): Công tắc tổng Lá chắn thông minh (config.enabled) đang tắt.

Sau 3.000 ms (3 giây) không tương tác khi bảng điều khiển đang đóng, nút sẽ chuyển sang trạng thái nghỉ (idle), tự động thu một phần vào mép trái hoặc phải màn hình (translateX(±58%) scale(0.92), opacity: 0.42). Nút cũng tự động ẩn đi khi bất kỳ video hoặc phần tử nào chuyển sang chế độ toàn màn hình (fullscreenchange).

Cách kích hoạt và sử dụng#

  • Cảm ứng / Chuột: Chạm hoặc nhấp vào Nút thao tác nhanh. Nếu nút đang ở trạng thái thu gọn mờ (idle) trên màn hình cảm ứng, lần chạm đầu tiên sẽ đánh thức nút (resetFabIdle) để tránh chạm nhầm khi đang cuộn trang; chạm lần tiếp theo khi nút đã sáng rõ sẽ mở bảng điều khiển. Bạn có thể kéo nút dọc theo hai mép màn hình để đổi vị trí (lưu trong nvirya_x_fab).
  • Phím tắt bàn phím (Alt+A): Nhấn tổ hợp Alt+A trên bất kỳ trang nào để đóng/mở bảng điều khiển, kể cả khi bạn đã tắt hiển thị Nút thao tác nhanh trong Cài đặt.
  • Menu trình quản lý Userscript: Chọn Open Control Panel (Alt+A) từ menu tiện ích mở rộng của trình quản lý userscript.
  • Đóng bảng điều khiển: Chạm vào vùng nền mờ bên ngoài, nhấn nút đóng (×), nhấn phím Escape, hoặc vuốt bảng điều khiển xuống dưới (trên màn hình di động rộng ≤ 640 px).

Cách ẩn hoặc khôi phục nút#

  • Bật hoặc tắt công tắc Nút thao tác nhanh ("Tự động thu vào cạnh màn hình") trong tab Cài đặt.
  • Nếu bạn ẩn nút trên trình duyệt di động không hỗ trợ menu lệnh GM_registerMenuCommand, bạn vẫn có thể mở lại bảng điều khiển bằng bàn phím rời (Alt+A) hoặc xóa dữ liệu lưu trữ của script trong trình quản lý userscript.

2. Thống kê bảo vệ và Hoạt động tuần này#

Nằm ở đầu tab Tổng quan:

  • Thanh chuyển chế độ (Trang này / Tất cả): Chuyển đổi 4 thẻ thống kê giữa số liệu của phiên tab hiện tại (stats.session) và số liệu tích lũy lưu trong nvirya_x_stats (stats.lifetime). Dòng phụ bên dưới mỗi thẻ luôn hiển thị số liệu của chế độ còn lại (Tất cả: ... hoặc Trang này: ...).
  • 4 thẻ bộ đếm:
    • Quảng cáo ("Đã dọn"): Tăng lên khi nút quảng cáo bị xóa, script quảng cáo bị vô hiệu hóa hoặc quảng cáo video được xử lý.
    • Phần tử đã ẩn: Tăng lên khi phần tử bị ẩn qua [data-nvirya-hidden], bẫy nhấp chuột bị vô hiệu hóa hoặc ẩn bằng quy tắc thủ công.
    • Pop-up đã chặn: Tăng lên khi chặn lệnh window.open hoặc chặn nhấp chuột mở tab quảng cáo mới.
    • Trình theo dõi đã chặn: Tăng lên khi chặn yêu cầu fetch, XMLHttpRequest, sendBeacon, <img>, hoặc <script> trỏ tới URL quảng cáo/theo dõi.
  • Hoạt động tuần này (T2–CN): Hiển thị biểu đồ cột 7 ngày của tổng số Quảng cáo + Phần tử đã ẩn trong tuần hiện tại (lưu lịch sử tối đa 14 ngày trong nvirya_x_weekly_history). Chạm vào bất kỳ cột ngày nào để xem chi tiết số lượng ở tiêu đề biểu đồ.

3. Cho phép trang này và Tạm dừng phiên này#

Nằm trong mục Tổng quan → Thao tác nhanh:

Nhãn khi đang bật bảo vệNhãn khi đang tạm dừngPhạm vi & Lưu trữ
Cho phép trang này ("Tạm dừng lọc trên tên miền hiện tại")Bật lại bảo vệ cho trang này ("Bật lại chặn quảng cáo trên tên miền này")Lưu vĩnh viễn qua các lần khởi động lại trình duyệt cho tên miền hiện tại và các tên miền phụ (nvirya_x_whitelist)
Tạm dừng phiên này ("Tắt bộ lọc đến khi đóng tab")Tiếp tục bảo vệ phiên này ("Bật lại bộ lọc ngay")Lưu trong nvirya_x_session cho tên miền hiện tại cho đến khi bật lại

Điều gì xảy ra ngay khi bạn tạm dừng hoặc cho phép trang#

Khi nhấn một trong hai nút trên, refreshProtection() → restorePageWhenDisabled() sẽ chạy ngay lập tức mà không bắt buộc tải lại trang:

  1. Đặt window.__NVIRYA_DISABLED__ = true và data-nvirya-disabled="1" trên thẻ <html> để các hook fetch ở ngữ cảnh chính cho phép mọi yêu cầu đi qua.
  2. Hoàn tác mọi thay đổi ẩn hộp thoại anti-adblock và ghi đè cuộn trang (AntiAdblockEngine.revertAll()).
  3. Dừng bộ quét quảng cáo video và khôi phục âm lượng/tốc độ phát ban đầu (stopVideoAdProtection()).
  4. Ngắt kết nối MutationObserver và vô hiệu hóa cả hai thẻ <style data-nvirya-cosmetic> và <style data-nvirya-site-rules>.
  5. Khôi phục style gốc cho các bẫy nhấp chuột đã gỡ (state.disarmedNodes), xóa thuộc tính [data-nvirya-hidden] và chèn lại các nút đã xóa trong state.removedNodes về vị trí cũ trên cây DOM.

Giới hạn: Các phần tử hoặc script đã bị chặn trước khi thực thi tại thời điểm document-start sẽ cần tải lại trang một lần để chạy lại mã khởi tạo gốc của chúng.

4. Ẩn phần tử trên trang (Bộ chọn phần tử)#

Chức năng#

Ẩn phần tử trên trang ("Chạm hoặc vuốt để ẩn phần tử bất kỳ") mở chế độ chọn phần tử trực quan với khung viền xanh dương, nhãn tên thẻ/class và thanh công cụ nổi ở cuối màn hình.

Cách kích hoạt#

  • Mở Tổng quan → Thao tác nhanh → Ẩn phần tử trên trang, hoặc
  • Chọn Select the element to block (Picker) từ menu trình quản lý userscript.

Trong lúc bộ chọn đang mở, window.open bị khóa hoàn toàn (state.pickerActive = true) và mọi sự kiện chạm/nhấp trên trang đều được chặn ở pha bắt giữ để bạn chọn phần tử mà không bị chuyển trang.

Thanh công cụ và thao tác cử chỉ#

Sau khi bạn chạm vào một phần tử trên trang, bộ chọn sẽ lập chuỗi tổ tiên (buildPickerChain, tối đa 7 cấp độ sâu, dừng trước <body> và <html>) và bật thanh công cụ:

  • Thanh trượt độ sâu (Cấp {current}/{total}): Kéo thanh trượt ngang sang trái hoặc phải để di chuyển giữa phần tử con đang chọn (Cấp 1/...) và các khung chứa cha bên ngoài.
  • Mở rộng: Tiến lên một cấp phần tử cha (traversePicker(-1)).
  • Thu hẹp: Lùi xuống một cấp phần tử con (traversePicker(1)).
  • Ẩn phần tử: Tạo bộ chọn CSS duy nhất (makeSelector) cho phần tử đang tô sáng, hỏi xác nhận (`Ẩn phần tử này?

{sel}), lưu quy tắc vào nvirya_x_site_rules[hostname]` và ẩn ngay lập tức.

  • Ẩn tất cả ({count}): Chỉ hiện ra khi makeSimilarSelector tìm thấy từ 2 phần tử trở lên trên trang có cùng thẻ và class CSS ổn định. Cho phép ẩn tất cả phần tử tương tự cùng lúc sau khi xác nhận (Ẩn tất cả phần tử khớp ({sel})?).
  • Cử chỉ vuốt / hất (Swipe / Fling) trên màn hình cảm ứng: Khi một phần tử đã được chọn khung xanh, bạn có thể vuốt nhanh trực tiếp qua phần tử đó (quãng đường > 60 px hoặc vận tốc > 0.4 px/ms). Phần tử sẽ bay ra khỏi màn hình (triggerPickerFling) và được lưu quy tắc ẩn ngay mà không cần hộp thoại xác nhận (trừ khi đó là trình phát video được bảo vệ, script sẽ hỏi: "Phần tử này thuộc trình phát video. Ẩn nó có thể làm gián đoạn phát. Tiếp tục?").
  • Hủy (hoặc phím Escape): Thoát bộ chọn mà không lưu thay đổi.

5. Quy tắc lọc của trang#

Nằm tại Tổng quan → Thao tác nhanh → Quy tắc lọc của trang ("Quản lý các phần tử đã ẩn thủ công trên trang này"):

  • Hiển thị hộp thoại liệt kê mọi bộ chọn CSS tùy chỉnh đã lưu cho hostname hiện tại.
  • Chạm vào nút xóa màu đỏ (×) bên cạnh bất kỳ bộ chọn nào để xóa riêng quy tắc đó (removeSingleRule) và hiện lại ngay phần tử tương ứng trên trang.
  • Để xóa toàn bộ quy tắc tùy chỉnh của trang hiện tại, mở Giới thiệu → Dữ liệu & cập nhật → Xóa quy tắc của trang.

6. Nhật ký kết nối#

Nằm tại Tổng quan → Thao tác nhanh → Nhật ký kết nối ("Xem và chặn tên miền bên thứ ba"):

  • Nội dung hiển thị: Liệt kê các tên miền bên thứ ba được ghi nhận trong phiên trang hiện tại (tối đa MAX_NET_BUFFER = 80 yêu cầu fetch, xhr, beacon, script và img gần nhất trong networkRingBuffer, cộng với tối đa 300 tài nguyên <script>, <iframe>, <img> tĩnh khác nguồn được quét qua scanStaticDomResources()), cùng các tên miền bạn đã chặn thủ công trước đó.
  • Các nút điều khiển:
    • Ô tìm kiếm (Lọc tên miền...): Lọc danh sách theo hostname hoặc URL mẫu.
    • Tab bộ lọc (Tất cả / Đã chặn): Chuyển đổi giữa toàn bộ tên miền bên thứ ba và chỉ các tên miền đang bị chặn.
    • Nút Chặn / Cho phép: Nhấn Chặn sẽ thêm tên miền vào nvirya_x_custom_blocked, cập nhật <style data-nvirya-cosmetic> và lập tức ẩn/xóa các nút DOM khớp trên trang (purgeCustomBlockedDom). Nhấn Cho phép sẽ gỡ tên miền khỏi danh sách chặn tùy chỉnh.
    • Nhãn Tích hợp sẵn: Các tên miền bị chặn bởi danh sách mặc định (RE_AD_HOST, RE_GAMBLING_HOST, RE_SUSPECT_TLD) sẽ hiển thị nút Tích hợp sẵn (vô hiệu hóa); để cho phép các tên miền này trên một trang cụ thể, hãy dùng Tạm dừng phiên này hoặc Cho phép trang này.
    • Xóa nhật ký phiên: Xóa danh sách yêu cầu tạm thời trong bộ nhớ của phiên hiện tại.

7. Dọn khung trống, Xem trang gốc (3 giây), Mở khóa cuộn trang và Hoàn tác#

  • Dọn khung trống ("Thu gọn ngay các khung quảng cáo còn sót"): Quét tối đa 200 phần tử khớp với [id^="google_ads_"], ins.adsbygoogle, iframe[src*="googlesyndication"], iframe[src*="doubleclick"] (bỏ qua trình phát video) để ẩn bằng data-nvirya-hidden="clean" và chạy lại handleAntiAdblock().
  • Xem trang gốc (3 giây) ("Hiện tạm thời các phần tử đã ẩn trong 3 giây"): Tạm thời tắt <style data-nvirya-site-rules> và <style data-nvirya-cosmetic> trong đúng 3.000 ms rồi tự động bật lại. Lưu ý: tính năng này chỉ hiện lại các phần tử bị ẩn bằng CSS, không khôi phục các nút đã xóa hẳn khỏi cây DOM (hãy dùng Tạm dừng phiên này nếu muốn khôi phục toàn bộ nút đã xóa).
  • Mở khóa cuộn trang ("Khôi phục cuộn trang bị lớp phủ ẩn khóa"): Ép overflow: auto !important và đặt lại position: static !important trên <html> và <body>.
  • Hoàn tác (Ctrl+Z) ("Khôi phục phần tử vừa ẩn"): Có thể kích hoạt từ bảng điều khiển hoặc nhấn Ctrl+Z (Cmd+Z trên macOS/iPadOS) khi đóng bảng điều khiển. Ưu tiên gỡ quy tắc CSS tùy chỉnh vừa tạo gần nhất của trang hiện tại; nếu không có quy tắc tùy chỉnh nào, script sẽ khôi phục phần tử DOM vừa bị xóa tự động gần nhất từ state.removedNodes.

8. Các tùy chọn trong tab Cài đặt#

Trong tab Cài đặt, bạn có thể tùy chỉnh:

  • Giao diện (Tự động | Sáng | Tối): Đổi tông màu sáng/tối cho bảng điều khiển và các hộp thoại (cũng có thể đổi nhanh bằng nút biểu tượng mặt trời/mặt trăng trên thanh tiêu đề).
  • Ngôn ngữ (Tự động | EN | VI | 中文): Chuyển đổi ngôn ngữ hiển thị giữa Tự động nhận diện theo trình duyệt, Tiếng Anh (en), Tiếng Việt (vi) và Tiếng Trung giản thể (zh-CN).
  • Các công tắc bảo vệ:
    • Lá chắn thông minh ("Chặn pop-up, chuyển hướng và bẫy ẩn"): Công tắc tổng điều khiển đồng thời enabled, popupProtection, redirectProtection và cosmeticFiltering.
    • Bảo vệ video ("Tối ưu trình phát video và tự động bỏ qua quảng cáo"): Điều khiển playerProtection (mặc định: Bật).
    • Lọc kết nối sâu ("Chặn triệt để các tên miền theo dõi và phân tích"): Điều khiển strictMode (mặc định: Tắt). Khi bật, chặn thêm các tên miền phân tích/theo dõi khớp RE_TRACKER và hạ ngưỡng ẩn phần tử DOM xuống 1 tín hiệu (signals >= 1).
    • Nút thao tác nhanh ("Tự động thu vào cạnh màn hình"): Ẩn hoặc hiện nút khiên nổi (showFloatingButton).
    • Vượt chặn anti-adblock ("Vô hiệu hóa tường chặn adblock trên trang tin tức"): Điều khiển antiAdblock (mặc định: Bật nơi hỗ trợ; tự động khóa trên iOS WebKit nếu sandbox chặn script ngữ cảnh chính).