Крч ситуация такая - заказчику вечно скликивают рекламные объявления конкуренты. Стата портится, цена за клик растёт. Было принято решение блочить вафелов. По IP выпаливать как то туповато - я решил воспользоваться localStorage:
var date = new Date(),
openMinute = date.getMinutes();
var totalSeconds = 0;
setInterval(function(){
++totalSeconds
console.log(totalSeconds)
}, 1000);
window.addEventListener("beforeunload", function (event) {
date = new Date();
var closeMinute = date.getMinutes(),
closeDay = date.getDate();
localStorage.setItem('lastVisitDay', closeDay)
localStorage.setItem('lastVisitMin', closeMinute);
localStorage.setItem('longSec', totalSeconds);
});
var lastVisitMin, lastLongtitudeSec;
lastVisitMin = localStorage.getItem('lastVisitMin');
lastLongtitudeSec = localStorage.getItem('longSec');
minuteLongtitude = openMinute - lastVisitMin;
if(minuteLongtitude <= 1 && parseInt(lastLongtitudeSec) < 20){
var xhr = new XMLHttpRequest();
xhr.open('POST',"/",true);
xhr.send('clicker=true');
}
Вставил его в head - потом на MODX (да, это лэндинг на MODX Revo кста) поставил If и отлавливаю $_POST['clicker']. Создал сниппет с echo $_POST['clicker'], в шаблоне создал условие, если $_POST['clicker'] равен true, то отдавать чистый лист, без ничего. И скрипты яндекса не прогружать. Если же нет, то грузить контент. Вот только беда - потестил - мне скрипт отсылает ajax когда уже контент грузиться начал... а $_POST['clicker'] ничему, естесн, не равен. Могу я как-то дать знать js, что ему надо выполниться до того, как документ загрузится? Или дать знать документу, чтоб он начал грузиться только после выполнения скрипта в head? async мне не помог. Судя по счётчику и консоли, POST происходит только на 12й секунде (интернет у меня не оч, но контент успевает прогружаться)