ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer

Как заставить скрипт отработать полностью до начала загрузки документа?

Крч ситуация такая - заказчику вечно скликивают рекламные объявления конкуренты. Стата портится, цена за клик растёт. Было принято решение блочить вафелов. По 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й секунде (интернет у меня не оч, но контент успевает прогружаться)
  • Вопрос задан
  • 504 просмотра
Решения вопроса 1
NikitaTratorov
@NikitaTratorov
CTO
Так не грузите контент, пока Ваш скрипт не даст добро. Иначе никак. Думаю, что придется грузить основной шаблон без контента, ждать добра от скрипта и аяксить остальное.
Как-то сложно и не сеошно, но всё зависит от Вас.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы