Сайт JavaScript - Таймер обратного отсчета

Я хочу создать таймер, который запускает таймер обратного отсчета. Код работает нормально, пока вы не измените страницу. Когда таймер проходит цикл и снова запускает таймер.

В идеале я хочу, чтобы таймер вел обратный отсчет независимо от страницы во всем домене.

Кроме того, если щелкнуть $sessionDecline, я хочу, чтобы был запущен 10-минутный таймер, в противном случае $sessionAccept вернется на домашнюю страницу со счетчиком 5 минут.

var SessionTime     = 2000,
    tickDuration    = 1000,
    $sessionAccept  = $('#session--accept'),
    $sessionDecline = $('#session--decline');

if ( Modernizr.localstorage && lscache.get('sessionActive') === null ){

    var myInterval  = setInterval(function(){

            SessionTime = SessionTime - tickDuration

        }, 1000),

        myTimeOut   = setTimeout(SessionExpireEvent, SessionTime);

} else if ( Modernizr.localstorage && lscache.get('sessionActive') === true ){

    SessionTime = 6000;
    var myInterval  = setInterval(function(){

            SessionTime = SessionTime - tickDuration

        }, 1000),

        myTimeOut   = setTimeout(SessionExpireEvent, SessionTime);

}

function SessionExpireEvent() {
    clearInterval(myInterval);

    $('#timout--popup').addClass('is--loaded');

    $sessionAccept.click(function(){

        window.location.href = '/';

        lscache.set('sessionActive', true);

        $(this)
            .closest('.overlay__wrapper')
            .removeClass('is--loaded');
    });

    $sessionDecline.click(function(){
        lscache.set('sessionActive', false);

        $(this)
            .closest('.overlay__wrapper')
            .removeClass('is--loaded');
    });
}

Я использую:

jQuery v1 / ls-cache / пользовательский модернизр


person Neil    schedule 04.11.2014    source источник


Ответы (1)


Заранее извините, что не сделал закодированный пример.

Я бы выяснил, какой будет дата/время через 10 или 5 минут, и записал бы это значение в файл cookie, который вы можете сделать в jQuery следующим образом $.cookie("test", 1);

Затем рассчитайте миллисекунды с этого момента до вашего целевого значения и установите время ожидания на это количество миллисекунд.

при загрузке страницы проверьте, установлен ли ваш файл cookie с помощью $.cookie("test");, если он установлен, затем используйте это значение, чтобы установить время ожидания, если нет, затем рассчитайте время ожидания и установите файл cookie.

Также не забудьте уничтожить куки в своей функции, используя $.removeCookie("test");

person Zombiesplat    schedule 04.11.2014