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); |