Как добавить HTML-элементы на страницу через GTM без потери атрибутов
Если в GTM нужно не просто вставить кусок разметки, а создать элемент программно, действуйте так:
— Создайте элемент через `document.createElement()`.
Так вы получаете полный контроль над тегом, а не полагаетесь на вставку сырого HTML через Custom HTML.
— Назначьте нужные атрибуты вручную через `setAttribute()`.
GTM часто вырезает нестандартные атрибуты при инъекции: `data-*`, `aria-*`, собственные имена атрибутов. Поэтому после создания элемента задавайте их отдельно.
— Заполняйте текст и вложенное содержимое через DOM-методы.
Используйте `textContent`, `appendChild()` или `innerHTML` только там, где это безопасно и не ломает структуру. Так меньше сюрпризов при рендеринге.
— Добавляйте элемент в нужное место через `appendChild()` или `insertBefore()`.
Сначала определите контейнер на странице, потом вставляйте элемент в конкретный узел, чтобы не зависеть от порядка загрузки тегов.
— Проверяйте результат в DevTools, а не только в превью GTM.
Сравните исходный элемент и то, что реально оказалось в DOM: именно на этом этапе чаще всего теряются атрибуты и поведение.
— Используйте программную вставку, если элемент влияет на аналитику.
Это особенно полезно для нестандартных событий, вспомогательных блоков consent-логики и first-party разметки, где важны точные атрибуты для последующей обработки.
Когда это пригодится: когда через GTM нужно добавить виджет, служебную разметку или first-party элемент, а обычный Custom HTML начинает «съедать» атрибуты и ломать трекинг.
— @ServerSideTrackingRu
Server-side tracking
@ServerSideTrackingRuPro
Как добавить HTML-элементы на страницу через GTM без потери атрибутов
Этот пост опубликован в Telegram-канале Server-side tracking. Подписаться можно по ссылке: @ServerSideTrackingRuPro.