Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Привязать куки и время к всплывающему окну


Автор: Workman31 25.1.2016, 20:26
Доброго времени суток уважаемые форумчане!

Помогите пожалуйста привязать к данному скрипту куки чтобы окно появлялось один раз в сутки и время появления его происходило примерно через одну минуту. Просто я не силен в данном, но очень нужно. 
Спасибо! 

Код

<script type="text/javascript">$(document).ready(function(){setTimeout("$('.show').show('drop');",1000);
setTimeout("$('.show').hide('drop');",15000)});</script>


Данный скрипт у меня вызывает своего рода всплывающую просилку регистрации на форуме, но хотелось бы его сделать так, чтобы окошко появлялось один раз в сутки 

Автор: Workman31 26.1.2016, 14:03
Ребята ну что никто не может помочь??

Автор: ksnk 26.1.2016, 17:36
Очень похоже на "сделайте все за меня". Халявщиков, как правило, не любят. Любят людей, которые пусть и неправильно, но стараются что-то сделать.
Ну или если задача решается в 2-3 строки.

Можно посоветовать обратится в "http://ru.vingrad.com/category-jobs"

Автор: Workman31 28.1.2016, 15:31
ksnk, Да причем тут халявщики то? Я просто реально не знаю как прописать куки к скрипту. Я просто работаю во сновном со стилями а скрипт пока что для меня тяжелая прога

Автор: ksnk 29.1.2016, 10:53
Цитата(Workman31 @  28.1.2016,  15:31 Найти цитируемый пост)
 Я просто реально не знаю как прописать куки к скрипту. 

И как это назвать? Точно не халявщик? Тут, вроде как форум программистов.

Код

/**
 * helper object to hold cookie in one place
 * @type {{get: get, set: set, delete: delete}}
 */
var cookie = {
    get: function (name) {
        if (document.cookie && document.cookie.toString() != '') {
            var cook = (new RegExp(";\\s*" + name + "\\s*=([^;]+)")).exec(';' + document.cookie);
            cook = cook && decodeURIComponent(cook[1]);
            try {
                return JSON.parse(cook);
            } catch (e) {
                // trust a Force, Luke
            }
            return cook;
        }
        return null;
    },
    set: function (name, value, opt) {
        opt = opt || {};
        if (value === null) {
            value = '';
            opt.expires = -1;
        }
        var expires = '';
        if (typeof(value) != 'string') {
            value = JSON.stringify(value);
        }
        if (opt.expires && (typeof (opt.expires) == 'number' || opt.expires.toUTCString)) {
            var date;
            if (typeof opt.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + Math.round(opt.expires * 24 * 60 * 60 * 1000));
            }
            else {
                date = opt.expires;
            }
            expires = '; expires=' + date.toUTCString();
        }
        if (typeof (opt.path) == 'undefined') {
            opt.path = '/';
        }
        document.cookie = name + '=' + encodeURIComponent(value) + expires +
            (opt.path ? '; path=' + opt.path : '') +
            (opt.domain ? '; domain=' + opt.domain : '') +
            (opt.secure ? '; secure' : '')
    },
    delete: function (name) {
        this.set(name, true, {expires: -1})
    }
};

$(document).ready(function () {
    if (!cookie.get('cantshow')) {
// do whatever you want
        console.log('yess!');
// setup new time marker
        var date = new Date();
        date.setHours(24, 0, 0, 0); // start at the next day
        cookie.set('cantshow', true, {expires: date });
    }
});

Во первых строках кода (5-51) определяется самодельный объект для работы с куками, так как стандартные средства Javascript слабы и убоги по неведомой мне причине, а нестандартные плагины страшны и велики по тем же неведомым причинам.

В строку 56 можно заменить на тот самый цирк с show/hide и таймаутами, который стоял раньше.

Собственно проверка, что в этот день этим броузером регистрацию уже запрашивали - строка 54.

58-60 - установка времени на начало следующего дня и установка куки до этого времени.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)