(function () { var buttons = [ { selector: '.max-bot-btn', suffix: '_maxbot' }, { selector: '.tg-bot-btn', suffix: '_tgbot' }, { selector: '.vk-bot-btn', suffix: '_vkbot' } ]; function addSuffixToUtmTerm(href, suffix) { try { var url = new URL(href, window.location.href); var params = url.searchParams; var term = params.get('utm_term') || ''; // Убираем старые bot-суффиксы, чтобы не получилось creative1_tgbot_maxbot term = term .replace(/_tgbot/g, '') .replace(/_maxbot/g, '') .replace(/_vkbot/g, ''); if (term) { params.set('utm_term', term + suffix); } else { params.set('utm_term', suffix.replace(/^_/, '')); } return url.toString(); } catch (e) { return href; } } function getLinkByElement(element) { if (!element) return null; if (element.tagName && element.tagName.toLowerCase() === 'a') { return element; } var parentLink = element.closest('a'); if (parentLink) { return parentLink; } var innerLink = element.querySelector('a'); if (innerLink) { return innerLink; } return null; } function findButtonConfigByElement(element) { for (var i = 0; i < buttons.length; i++) { var button = buttons[i]; if (element.matches && element.matches(button.selector)) { return button; } if (element.closest && element.closest(button.selector)) { return button; } var link = getLinkByElement(element); if (link && link.querySelector(button.selector)) { return button; } } return null; } function updateLinks() { buttons.forEach(function (button) { var elements = document.querySelectorAll(button.selector); elements.forEach(function (element) { var link = getLinkByElement(element); if (!link) return; var href = link.getAttribute('href'); if (!href) return; var newHref = addSuffixToUtmTerm(href, button.suffix); link.setAttribute('href', newHref); }); }); } // Обновляем ссылки несколько раз после загрузки, // чтобы основной UTM-скрипт сайта успел сначала подставить метки document.addEventListener('DOMContentLoaded', function () { setTimeout(updateLinks, 500); setTimeout(updateLinks, 1500); setTimeout(updateLinks, 3000); setTimeout(updateLinks, 5000); }); window.addEventListener('load', function () { setTimeout(updateLinks, 1000); setTimeout(updateLinks, 3000); }); // Самая важная страховка: // прямо при клике формируем финальную ссылку и отправляем пользователя по ней document.addEventListener('click', function (event) { var clickedElement = event.target; var link = getLinkByElement(clickedElement); if (!link) return; var button = findButtonConfigByElement(clickedElement); if (!button) return; var href = link.getAttribute('href'); if (!href) return; var newHref = addSuffixToUtmTerm(href, button.suffix); link.setAttribute('href', newHref); // Гарантированно уводим по исправленной ссылке event.preventDefault(); var target = link.getAttribute('target'); if (target === '_blank') { window.open(newHref, '_blank'); } else { window.location.href = newHref; } }, true); })();