76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
|
|
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);
|