Hướng dẫn kỹ thuật tích hợp EqualWeb widget: cấu hình window.interdeal, thiết lập CSP, tối ưu hiệu năng và đánh giá kỹ thuật dạng overlay.
EqualWeb
EqualWeb là gì
EqualWeb là giải pháp Accessibility Widget (Client-side Overlay) hỗ trợ người dùng cuối tùy biến giao diện và bổ sung các thuộc tính hỗ trợ tiếp cận (a11y) theo chuẩn WCAG 2.1/2.2 AA, ADA Title III và Section 508.
Đối với developer, đây là giải pháp tích hợp nhanh qua script nhúng bên thứ ba mà không cần can thiệp sâu vào codebase hiện tại.
Độ phức tạp: 1/10
Cơ chế hoạt động
EqualWeb hoạt động hoàn toàn ở phía client (browser runtime):
- Loader Script: Một file JS nhỏ (~5KB) được tải bất đồng bộ (
async/defer) để khởi tạo namespacewindow.interdeal. - DOM Injection: Script tải bundle chính từ EqualWeb CDN, sau đó inject floating icon và modal điều khiển vào
document.body. - DOM Mutation & CSS Overrides: Khi người dùng bật tính năng (độ tương phản, cỡ chữ, phông chữ Dyslexic, dừng animation), script sẽ:
- Chèn các class và thẻ
<style>inline để override CSS hiện tại. - Bổ sung động các thuộc tính
aria-label,role,tabindexvào các element thiếu sót thông qua cơ chế quét DOM tự động.
- Chèn các class và thẻ
Cài đặt và tích hợp
1. Nhúng trực tiếp vào HTML
Đặt snippet sau trước thẻ đóng </body> hoặc trong <head> của trang:
2. Tích hợp trong SPA (React / Next.js)
Với các framework SPA, cần đảm bảo script chỉ được nạp một lần duy nhất tại root layout:
Bảng tham số cấu hình (window.interdeal)
Cấu hình Content Security Policy (CSP)
Nếu web server hoặc CDN có header CSP chặt chẽ, cần whitelist các domain của EqualWeb:
EqualWeb inject inline styles vào DOM khi người dùng kích hoạt các tùy chọn màu sắc hoặc độ tương phản. Do đó, style-src bắt buộc cần 'unsafe-inline' trừ khi dùng nonce hỗ trợ runtime injection.
Tác động hiệu năng (Performance & CWV)
Khi tích hợp EqualWeb, developer cần lưu ý các chỉ số Web Vitals sau:
- Largest Contentful Paint (LCP):
- Sử dụng thuộc tính
deferhoặcstrategy="lazyOnload"để script không chặn tải tài nguyên chính của trang.
- Sử dụng thuộc tính
- Total Blocking Time (TBT) / INP:
- Bundle của widget thực thi sau khi DOM ready. Trên các trang có DOM tree lớn (>1500 nodes), việc quét và gắn ARIA thuộc tính có thể chiếm thread chính trong khoảng 50–150ms.
- Layout Shift (CLS):
- Cố định icon bằng
position: fixedvới tọa độ cố định (btn_horizontal,btn_vertical) để không đẩy các element khác trong layout. - Chú ý tránh trùng tọa độ với các widget thứ ba khác (Zendesk chat, Intercom, back-to-top button).
- Cố định icon bằng
Đánh giá kỹ thuật: Overlay vs Native Remediation
Tóm tắt
- Dùng EqualWeb khi cần đáp ứng gấp yêu cầu tuân thủ giao diện người dùng và cung cấp bộ công cụ trợ năng nhanh chóng.
- Luôn tải script với
defer/lazyOnloadvà khai báo đầy đủ CSP directives để tránh lỗi bảo mật. - Overlay không thay thế được việc viết Semantic HTML chuẩn, quản lý keyboard focus hợp lý và cung cấp thẻ
altđúng ngữ cảnh trong source code.