Автоклик по кнопке с запоминанием на куках

Как сделать через определенное время клик по кнопке, когда пользователь зашел на сайт. В дальнейшем для этого пользователя не делать клик по кнопке на протяжении недели ? Сам же пользователь может кликать по кнопке сколько угодно раз. Но скрипт за него выполнит только один раз клик, запомнит и не будет выполнять клик на протяжении 7 дней ?


Ответы (1 шт):

Автор решения: Denis640Kb

Отчасти, Вы, конечно правы.
Но не все тут такие плохие, и много действительно хороших людей.
Однако, я в свою очередь тоже решил покинуть данное сообществу ввиду очень большой агрессии.
Пробовал общаться с модераторами, но всё бестолку.
Написал решение задачи. (Обратите внимание на комментарии, постарался подробнее расписать.)
Для примера поставил 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>

→ Ссылка