Автоклик по кнопке с запоминанием на куках
Как сделать через определенное время клик по кнопке, когда пользователь зашел на сайт. В дальнейшем для этого пользователя не делать клик по кнопке на протяжении недели ? Сам же пользователь может кликать по кнопке сколько угодно раз. Но скрипт за него выполнит только один раз клик, запомнит и не будет выполнять клик на протяжении 7 дней ?
Ответы (1 шт):
Отчасти, Вы, конечно правы.
Но не все тут такие плохие, и много действительно хороших людей.
Однако, я в свою очередь тоже решил покинуть данное сообществу ввиду очень большой агрессии.
Пробовал общаться с модераторами, но всё бестолку.
Написал решение задачи. (Обратите внимание на комментарии, постарался подробнее расписать.)
Для примера поставил 60 секунд, но с возможностью сделать на 7 дней.
Куки в сниппете не работают, по-этому скопируйте себе в файл.
function getCookie(name) { // Функция получения куки по имени
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
but.onclick = function () { // При нажатии кнопки
var time = new Date(); // Получаем текущую дату
var cookie = getCookie('clicked'); //Получаем куки по имени через функцию
var dif = 0; // Если нет значения в куки, то останется 0
if (cookie){ //Если куки существую, то
let cookieTime = new Date(cookie); // Преобразуем значение куки в дату
let dif1 = time - cookieTime; // Вычитаем текущее время минус время куки, чтобы получить разницу.
dif = Math.round(dif1/1000); // округляем и делим на 1000(это миллисекунды)
}
var z = document.getElementById('text'); // получаем значение куда записывать (для теста
var duration = 60; // Длительность между нажатиями.Поставил 60 секунд для демонстрации. Если Вам надо 7 дней, то это 604800 секунд. Поменяйте значение.
if (dif > duration || dif == 0) { // Если длительность больше указанного времени, или равно 0, то выполняем операцию
z.innerText = 'Скрипт реализован'; // Добавляем текст в элемент
document.cookie = "clicked=" + time; // Записываем данные в куки по имени.
} else {
var f = duration - dif; // получаем разницу для вывода сенкуд. Можно будет поменять до минут и так далее, смотря как надо выводить
z.innerText = "До повторного выполнения подождите "+f+" секунд"; // Выводим сообщение с таймером секунд.
}
}
<div id="text">Нажми на кнопку</div>
<button id="but">Тык</button>