Как блокировать скрипты до получения согласия: сравнение трёх методов

Проблема: теги срабатывают слишком рано

Баннер согласия работает только тогда, когда теги за ним уважают выбор посетителя. Самый частый сбой прост: баннер появляется, но скрипты аналитики и рекламы уже загрузились и установили идентификаторы до того, как кто-либо что-то нажал. Исправить это значит блокировать скрипты до получения согласия. Есть три практичных способа.

Метод 1: подмена типа скрипта

Браузеры выполняют элемент script только тогда, когда его тип — это тип JavaScript. Если изменить тип на text/plain, браузер проигнорирует скрипт. Затем вы добавляете атрибут data, фиксирующий, к какой категории согласия относится скрипт:

Подходит для: нескольких известных встроенных или внешних скриптов в ваших шаблонах. Остерегайтесь: скриптов, которые внедряют другие скрипты: они не проходят через ваши шаблоны и потому никогда не переписываются.

Метод 2: управление тегами в менеджере тегов

Если ваши теги находятся в Google Tag Manager или подобном инструменте, контейнер можно оставить на странице и управлять срабатыванием с помощью триггеров с учётом согласия. Каждому тегу задаётся требование согласия, и менеджер тегов запускает его только тогда, когда соответствующее состояние согласия предоставлено. Главное преимущество — централизованный контроль: маркетинг может добавлять теги, не трогая шаблоны, а правило путешествует вместе с тегом.

Подходит для: сайтов с множеством маркетинговых тегов. Остерегайтесь: жёстко прописанных скриптов вне контейнера и пользовательских HTML-тегов, которые сами загружают другие скрипты.

Метод 3: динамическая загрузка скриптов при согласии

Здесь вы полностью убираете теги script со страницы и пишете функцию, которая внедряет их только после события согласия. Это самый чистый вариант для одностраничных приложений и для разработчиков, которым нужен полный контроль:

  1. Подпишитесь на callback согласия от вашей CMP.
  2. Проверьте, какие категории были разрешены.
  3. Создайте элемент script, задайте его источник и добавьте в документ.
  4. Выполните код инициализации в обработчике загрузки скрипта.

Подходит для: современных приложений с этапом сборки. Остерегайтесь: забыть про вернувшегося посетителя, чей сохранённый выбор должен запускать загрузку при открытии страницы без нового клика.

Обработка отзыва согласия

Блокировка до согласия — лишь половина работы. Если посетитель позже отзывает согласие, перестаньте вызывать инструменты и убедитесь, что они не продолжают читать или записывать идентификаторы. Удаление скрипта со страницы не удаляет код, уже находящийся в памяти, поэтому перезагрузка после отзыва часто оказывается самым простым надёжным решением.

Какой метод выбрать?

Как это протестировать

  1. Откройте приватное окно с очищенным кэшем.
  2. Откройте инструменты разработчика браузера на вкладках Network и Application до загрузки страницы.
  3. Загрузите страницу и не трогайте баннер. Убедитесь, что запросы аналитики и рекламы не отправляются и связанные cookie или записи хранилища не появляются.
  4. Примите только одну категорию и убедитесь, что загружаются только соответствующие скрипты.
  5. Отклоните всё, перезагрузите страницу и повторите первую проверку.
  6. Отзовите согласие и проверьте поведение, описанное выше.

Где место FlexyConsent

FlexyConsent поддерживает IAB TCF 2.4 и Google Consent Mode v2 и является CMP, сертифицированной Google (CMP ID 317). Какой бы метод блокировки вы ни выбрали, задача баннера — дать вашему коду чёткий сигнал о выборе посетителя. Ваша задача — обеспечить, чтобы каждый скрипт ему подчинялся.

Ключевые выводы

← Блог Читать все →