// Функция для получения UTM-меток из URL
function getUTMParams() {
const utm_params = {};
const params = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
const query = window.location.search.substring(1);
const vars = query.split('&');
for (let i = 0; i < vars.length; i++) {
const pair = vars[i].split('=');
if (pair[0] && params.includes(pair[0])) {
utm_params[pair[0]] = decodeURIComponent(pair[1] || '');
}
}
return utm_params;
}
// Функция для сохранения UTM-меток в localStorage
function saveUTMParams() {
const utm_params = getUTMParams();
if (Object.keys(utm_params).length > 0) {
localStorage.setItem('utm_params', JSON.stringify(utm_params));
}
}
// Функция для добавления UTM-меток к URL
function addUTMToURL(url) {
const savedParams = localStorage.getItem('utm_params');
if (!savedParams) {
return url;
}
const utm_params = JSON.parse(savedParams);
const urlObj = new URL(url);
for (const key in utm_params) {
if (utm_params[key]) {
urlObj.searchParams.set(key, utm_params[key]);
}
}
return urlObj.toString();
}
// Сохраняем UTM-метки при загрузке страницы
document.addEventListener('DOMContentLoaded', function() {
saveUTMParams();
// Обработчик для всех форм Tilda
document.querySelectorAll('form').forEach(function(form) {
form.addEventListener('tildaform:aftersubmit', function(e) {
// Находим ссылку редиректа в data-атрибуте формы
const redirectUrl = form.getAttribute('data-success-url');
if (redirectUrl) {
// Получаем UTM-метки и добавляем их к URL редиректа
const newUrl = addUTMToURL(redirectUrl);
// Устанавливаем новый URL с UTM-метками
form.setAttribute('data-success-url', newUrl);
}
});
});
// Также обрабатываем все ссылки на странице
document.querySelectorAll('a').forEach(function(link) {
// Только для внутренних ссылок сайта
if (link.href && link.href.indexOf(window.location.hostname) > -1) {
link.addEventListener('click', function(e) {
const newUrl = addUTMToURL(link.href);
link.href = newUrl;
});
}
});
});