Files
exdv/exdv.js

76 lines
2.4 KiB
JavaScript
Raw Normal View History

2025-10-17 12:23:41 +03:00
function trackAdvViews() {
// Находим все изображения с data-picture="ex_1109"
const images = document.querySelectorAll('img[data-picture^="ex_"]');
// Получаем данные пользователя
const userData = {
page_url: window.location.href,
user_agent: navigator.userAgent,
viewed_at: new Date().toISOString()
};
// Отслеживаем только уникальные adv_id на этой странице
const trackedIds = new Set();
images.forEach(img => {
const pictureData = img.getAttribute('data-picture');
const advId = pictureData.replace('ex_', '');
// Проверяем, не отслеживали ли мы уже этот adv_id на этой странице
if (!trackedIds.has(advId)) {
trackedIds.add(advId);
const data = {
adv_id: parseInt(advId),
...userData
};
// Отправляем запрос на сервер
sendViewData(data);
}
});
}
function sendViewData(data) {
const url = 'https://exdv.argumenti.ru';
console.log('📤 Отправка JSON данных:', data);
fetch(url, {
method: 'POST',
mode: 'no-cors',
headers: {
'Content-Type': 'application/json', // Важно для JSON!
},
body: JSON.stringify(data) // Отправляем как JSON
})
.then(response => {
console.log('📥 Статус ответа:', response.status);
if (!response.ok) {
return response.text().then(text => {
throw new Error(`HTTP ${response.status}: ${text}`);
});
}
return response.json();
})
.then(result => {
console.log('✅ Успешный ответ:', result);
})
.catch(error => {
console.error('❌ Ошибка:', error.message);
});
}
// Дебаунсинг для избежания множественных вызовов
let trackTimeout = null;
function debouncedTrackAdvViews() {
if (trackTimeout) {
clearTimeout(trackTimeout);
}
trackTimeout = setTimeout(trackAdvViews, 100);
}
// Запускаем отслеживание при загрузке страницы
document.addEventListener('DOMContentLoaded', debouncedTrackAdvViews);