как заставить javascript работать раз в день

Тема в разделе "JavaScript", создана пользователем SPoX, 7 апр 2015.

Модераторы: ZiX
  1. SPoX

    SPoX

    Регистр.:
    19 апр 2014
    Сообщения:
    175
    Симпатии:
    24
    здравствуйте думаю в правилном разделе открил тему

    и так этот скрипт от body click который работает раз в день
    то ест если пользователь кликнул сегодня в 16:24 то скрипт позволит заново кликнуть только завтра в 16:24

    как настроить так чтобы если пользователь кликнул сегодня в 16:24 то после 00:01 скрипт заново позволило пользователя кликнуть

    надеюсь хорошо объяснил

    за ранее спасибо всем
    Код:
    <script type="text/javascript"> if (navigator.cookieEnabled) {var pop_under = null;var pop_cookie_name = "http://mysite.ru/";var pop_timeout = 720;function pop_cookie_enabled(){var is_enabled = false;if (!window.opera && !navigator.cookieEnabled)return is_enabled;if (typeof document.cookie == 'string')if (document.cookie.length == 0){document.cookie = "test";is_enabled = document.cookie == 'test';document.cookie = '';}else{is_enabled = true;}return is_enabled;}function pop_getCookie(name){var cookie = " " + document.cookie;var search = " " + name + "=";var setStr = null;var offset = 0;var end = 0;if (cookie.length > 0){offset = cookie.indexOf(search);if (offset != -1){offset += search.length;end = cookie.indexOf(";", offset);if (end == -1){end = cookie.length;}setStr = unescape(cookie.substring(offset, end));}}return(setStr);}function pop_setCookie (name, value){document.cookie = name + "=" + escape(value) + "; expires=Friday,31-Dec-50 23:59:59 GMT; path=/;";}function show_pop(){var pop_wnd = "http://somesiteads.ru";var fea_wnd = "scrollbars=1,resizable=1,toolbar=1,location=1,menubar=1,status=1,directories=0";var need_open = true;if (document.onclick_copy != null)document.onclick_copy();if (document.body.onbeforeunload_copy != null)document.body.onbeforeunload_copy();if (pop_under != null){if (!pop_under.closed)need_open = false;}if (need_open){if (pop_cookie_enabled()){val = pop_getCookie(pop_cookie_name);if (val != null){now = new Date();val2 = new Date(val);utc1 = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds());utc2 = Date.UTC(val2.getFullYear(), val2.getMonth(), val2.getDate(), val2.getHours(), val2.getMinutes(), val2.getSeconds());if ((utc1 - utc2)/1000 < pop_timeout*60){need_open = false;}}}}if (need_open){under = window.open(pop_wnd, "", fea_wnd);under.blur();window.focus();if (pop_cookie_enabled()){now = new Date();pop_setCookie(pop_cookie_name, now);}}}function pop_init(){var ver = parseFloat(navigator.appVersion);var ver2 = (navigator.userAgent.indexOf("Windows 95")>=0 || navigator.userAgent.indexOf("Windows 98")>=0 || navigator.userAgent.indexOf("Windows NT")>=0 )&&(navigator.userAgent.indexOf('Opera') == -1)&&(navigator.appName != 'Netscape') &&(navigator.userAgent.indexOf('MSIE') > -1) &&(navigator.userAgent.indexOf('SV1') > -1) &&(ver >= 4);if (ver2){if (document.links){for (var i=0; i<document.links.length; i++){if (document.links[i].target != "_blank"){document.links[i].onclick_copy = document.links[i].onclick;document.links[i].onclick = show_pop;}}}}document.onclick_copy = document.onclick;document.onmouseup = show_pop;}pop_init();}</script>
     
  2. SPoX

    SPoX

    Регистр.:
    19 апр 2014
    Сообщения:
    175
    Симпатии:
    24
    честно сказать я в javascript-е не силен ну почти не знаю ничего
    но как я понимаю этот скрипт который я выложил и так использует Cookie

    но вопрось втом как заставить после 00:00 заново работать а не до следующего дня как я уже в первом посте написал

    вы читали что я написал? это код от body click а не всплывающего окна
    этот код и так работает отлично

    еще раз объясняю
    если пользователь кликнул сегодня в 16:24 то скрипт позволит заново кликнуть только завтра в 16:24 а надо настроить так чтобы если пользователь кликнул сегодня в 16:24 то после 00:01 скрипт заново позволило пользователя кликнуть

    что тут непонятного
     
    Последнее редактирование модератором: 7 апр 2015
  3. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Изменить переменную?
    Код:
    var pop_timeout = 720;
     
  4. SPoX

    SPoX

    Регистр.:
    19 апр 2014
    Сообщения:
    175
    Симпатии:
    24
    что там написать вместо 720?
    извиняюсь но я в javascript-е не знаю ничего

    этот 720 означает 24 часовой интервал или что?
    что вместо этого написать чтобы в 00:01 принудително очистить cookie
     
  5. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Что-нибудь написать и проверить что изменилось.
    Я написал бы 1, потом 2. И проверил бы как изменился интервал установки куков.
    720 похоже на переменную количества минут, содержащуюся в 12 часах.
    https://www.google.by/search?q==720...=cr&ei=5jwmVdOhIIreaOPrgoAN#safe=off&q==12*60
     
    SPoX нравится это.
  6. SPoX

    SPoX

    Регистр.:
    19 апр 2014
    Сообщения:
    175
    Симпатии:
    24
    да вы правы это интервал установки куков
    но записать вместо 720 на пример 360 ничего не меняет
    ведь надо заставить скрипт очистить в 00:00

    а если написать там вместо 720 на пример 360 то получается так если пользователь кликнул сегодня в 16:24 то скрипт позволит заново кликнуть после 12 часов а не после 00:00

    изменяя 720 уменьшили 24 часовой интервал до 12
     
  7. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
  8. SPoX

    SPoX

    Регистр.:
    19 апр 2014
    Сообщения:
    175
    Симпатии:
    24
    This webpage is not available
    не открывает страницу

    поискал в google и нашёл вот ето
    в моем коде что я написал в первом посту тоже есть что-то вроде этого

    Код:
    "; expires=Friday,31-Dec-50 23:59:59 GMT; path=/;"
    что это? как указать чистку каждый день в 00:00

    помогите кто знает а то с мойми знаниами javascript ничего не выходит
     
  9. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Будет запускаться раз в сутки:
    HTML:
    <script type="text/javascript">
    if (navigator.cookieEnabled) {
        var pop_under = null;
        var pop_cookie_name = "popup";
    
        function pop_cookie_enabled() {
            var is_enabled = false;
            if (!window.opera && !navigator.cookieEnabled) return is_enabled;
            if (typeof document.cookie == 'string')
                if (document.cookie.length == 0) {
                    document.cookie = "test";
                    is_enabled = document.cookie == 'test';
                    document.cookie = '';
                } else {
                    is_enabled = true;
                }
            return is_enabled;
        }
    
        function pop_getCookie(name) {
            var cookie = " " + document.cookie;
            var search = " " + name + "=";
            var setStr = null;
            var offset = 0;
            var end = 0;
            if (cookie.length > 0) {
                offset = cookie.indexOf(search);
                if (offset != -1) {
                    offset += search.length;
                    end = cookie.indexOf(";", offset);
                    if (end == -1) {
                        end = cookie.length;
                    }
                    setStr = unescape(cookie.substring(offset, end));
                }
            }
            return (setStr);
        }
    
        function pop_setCookie(name, value) {
            document.cookie = name + "=" + escape(value) + "; expires=Friday,31-Dec-50 23:59:59 GMT; path=/;";
        }
    
        function show_pop() {
            var pop_wnd = "http://somesiteads.ru";
            var fea_wnd = "scrollbars=1,resizable=1,toolbar=1,location=1,menubar=1,status=1,directories=0";
            var need_open = true;
            if (document.onclick_copy != null) document.onclick_copy();
            if (document.body.onbeforeunload_copy != null) document.body.onbeforeunload_copy();
            if (pop_under != null) {
                if (!pop_under.closed) need_open = false;
            }
            if (need_open) {
                if (pop_cookie_enabled()) {
                    val = pop_getCookie(pop_cookie_name);
                    if (val != null) {
                        now = new Date();
                        val2 = new Date(val);
                        utc1 = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
                        utc2 = Date.UTC(val2.getFullYear(), val2.getMonth(), val2.getDate());
                        if ((utc1 - utc2) < 1) {
                            need_open = false;
                        }
                    }
                }
            }
            if (need_open) {
                under = window.open(pop_wnd, "", fea_wnd);
                under.blur();
                window.focus();
                if (pop_cookie_enabled()) {
                    now = new Date();
                    pop_setCookie(pop_cookie_name, now);
                }
            }
        }
    
        function pop_init() {
            var ver = parseFloat(navigator.appVersion);
            var ver2 = (navigator.userAgent.indexOf("Windows 95") >= 0 || navigator.userAgent.indexOf("Windows 98") >= 0 || navigator.userAgent.indexOf("Windows NT") >= 0) && (navigator.userAgent.indexOf('Opera') == -1) && (navigator.appName != 'Netscape') && (navigator.userAgent.indexOf('MSIE') > -1) && (navigator.userAgent.indexOf('SV1') > -1) && (ver >= 4);
            if (ver2) {
                if (document.links) {
                    for (var i = 0; i < document.links.length; i++) {
                        if (document.links[i].target != "_blank") {
                            document.links[i].onclick_copy = document.links[i].onclick;
                            document.links[i].onclick = show_pop;
                        }
                    }
                }
            }
            document.onclick_copy = document.onclick;
            document.onmouseup = show_pop;
        }
        pop_init();
    }
    </script>
     
    SPoX нравится это.
  10. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Spox, у тебя есть функция, устанавливающая куки.
    720 — количество 30-секундных интервалов в сутках.
    Со страницы https://learn.javascript.ru/task/get-seconds-today
    То есть, по аналогии, до следующей полуночи осталось, в секундах:
    Код:
    var d = new Date();
    var until_midnight = 24*60*60 - (d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds());
    // в переменной until_midnight — время до следующей полуночи в секундах
    
    Дальше сможете сообразить что делать?