Об этом проекте

js-fair-consent — это open-source решение для управления согласием, разработанное для веб-сайтов, которые хотят уважать конфиденциальность посетителей, при этом имея возможность этично и юридически корректно использовать аналитические и маркетинговые инструменты. Библиотека предоставляет баннер согласия (полностью настраиваемый через HTML-структуру и CSS), который запрашивает разрешение у посетителей перед загрузкой любых скриптов аналитики. После получения согласия или отказа соответствующие сервисы загружаются асинхронно и неблокирующе, следуя современным практикам производительности веба. **Поддерживаемые провайдеры аналитики** - Google Analytics (через gtag.js) с поддержкой Consent Mode v2 (режимы `consent-only` или `preload`) - Matomo, с использованием его родного API согласия (`requireConsent`, `rememberConsentGiven`, `forgetConsentGiven`) - Umami, с режимом без предварительной загрузки для предотвращения перерисовок при позднем получении согласия - Hotjar,conditionally загружается только при предоставлении согласия на маркетинг или персонализацию **Ключевые возможности** - Асинхронная отложенная загрузка скриптов — рендеринг страницы никогда не блокируется - Глобальный контроль конфиденциальности (GPC) и сигнал Do-Not-Track (DNT) автоматически уважаются — при обнаружении одного из них баннер скрывается, а все опциональные инструменты остаются выключенными - Privacy-by-design по умолчанию: никаких cookie до явного согласия, безопасные атрибуты cookie (`SameSite=Lax`, только HTTPS) - Опциональное детализированное согласие: посетители могут одобрять или отклонять отдельные категории (аналитика, маркетинг, персонализация) вместо единственного выбора «всё или ничего» - CSP-safe: поддерживает атрибуты `nonce` и `integrity` для строгих настрой Content Security Policy - Встроенная i18n: английские и польские переводы поставляются по умолчанию, расширяема для других языков - Готов к CDN: распространяется напрямую через jsDelivr или GitHub Pages **Конфигурация** Библиотека инициализируется через простой объект JavaScript, передаваемый в `ConsentAnalytics.init()`. Пользователи объявляют, какие сервисы они хотят поддерживать, предоставляют свои ID (например, measurement ID GA, website ID Umami, URL и site ID Matomo, project ID и версия Hotjar) и устанавливают параметры, такие как `debug`, `locale` и `granular` согласие. Если детализированное согласие включено, сохраняемый cookie становится объектом JSON, отображающим каждую категорию на её статус одобрения, и каждый сервис проверяет соответствующее значение категории перед загрузкой. **Публичный API** Библиотека открывает небольшой набор методов для программистского доступа: - `ConsentAnalytics.hasConsent()` — возвращает булево значение, указывающее, было ли дано какое-либо согласие - `ConsentAnalytics.readPrefs()` — возвращает полный объект предпочтений согласия - `ConsentAnalytics.writePrefs(prefs)` — сохраняет новое состояние предпочтений - `ConsentAnalytics.revokeConsent()` — очищает сохранённое согласие и показывает баннер снова - `ConsentAnalytics.trackPageView()` — вручную запускает pageview (полезно для SPA) Проект лицензирован под MIT и был создан Rafałem Masiarek.