Как проверить, истек ли срок действия файла cookie JavaScript? - PullRequest
9 голосов
/ 31 января 2012

Можно ли проверить, не истек ли срок использования файла cookie javascript?

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

Я использую плагин jquery-1.5.js и jquery.cookies.js.

Спасибо.

CODE

var jq = jQuery.noConflict();
jq(document).ready(function () {

    var timeStart, timeSubmit, timeLeft;
    timeSubmit = 5 * 60 * 1000;
    timeStart = jaaulde.utils.cookies.get("_watchman");
    try {
        if(jaaulde.utils.cookies.test()) {
            throw "err1";
        }
        else if(hasCookieExpired) {
            throw "err2";
        }
        else if(!timeStart) {
            jaaulde.utils.cookies.set("_watchman", String(new Date().getTime()), {path: '/path', expiresAt: new Date((new Date().getTime() + timeSubmit))});
            timeLeft = timeSubmit - (new Date().getTime() - Number(jaaulde.utils.cookies.get("_watchman")));
            timeCheck();
        }
        else {
            timeLeft = timeSubmit - (new Date().getTime() - Number(jaaulde.utils.cookies.get("_tts")));         

            timeCheck();
        }

    } catch(err) {
        //handle errors
    }

    function timeCheck() {
            if(timeLeft <= 0) {
                triggerSubmit();
            }
            else {
                setTimeout(triggerSubmit, timeLeft);    
                setInterval(showTimeLeft, 1000);
            }       
    }

    function triggerSubmit() {
        //submit it
    }

    function showTimeLeft() {
        //do something
    }

});

Ответы [ 4 ]

10 голосов
/ 31 января 2012
if( $.cookie('yourCookie') === null ) {
    // EXPIRED
} else {
    // DO SOMETHING ELSE
}

Или так, используя Тернарный оператор :

$.cookie('yourCookie') === null ? /* EXPIRED */ : /* DO SOMETHING ELSE */;

https://github.com/carhartl/jquery-cookie (больше не поддерживается, архивируется)
https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie
https://github.com/js-cookie/js-cookie

2 голосов
/ 07 сентября 2014

Если вы говорите, что браузер не удалил cookie, возможно, это связано с тем, что ваш часовой пояс отличается от UTC.

2 голосов
/ 31 января 2012

Браузер автоматически удалит любой файл cookie после истечения срока его действия, поэтому все, что вам нужно сделать, это проверить, существует ли файл cookie или нет.

1 голос
/ 29 октября 2014

Для проверки введите ниже HTML-код

<label for="expsecs">Cookie expiration in seconds:</label>
<input type="text" id="expsecs" value="5" /><br />
<button id="setcookie">set cookie</button>
<button id="getcookie">get cookie</button>
<div id="cookiestatus">status</div>

Пожалуйста, введите ниже jQuery код

function set_cookie() {
    var secs = parseInt($('#expsecs').val(), 10);
    if (isNaN(secs)) {
        secs = 5;
    }
    var now = new Date();
    var exp = new Date(now.getTime() + secs*1000);
    var status = '';
    document.cookie = 'ExpirationCookieTest=1; expires='+exp.toUTCString();
    if (document.cookie && document.cookie.indexOf('ExpirationCookieTest=1') != -1) {
        status = 'Cookie successfully set. Expiration in '+secs+' seconds';
    } else {
        status = 'Cookie NOT set. Please make sure your browser is accepting cookies';
    }

    $('#cookiestatus').text(status);
}

function get_cookie() {
    var status = '';
    if (document.cookie && document.cookie.indexOf('ExpirationCookieTest=1') != -1) {
        status = 'Cookie is present';
    } else {
        status = 'Cookie is NOT present. It may be expired, or never set';
    }
    $('#cookiestatus').text(status);
}

function init() {
    $('#setcookie').bind('click', set_cookie);
    $('#getcookie').bind('click', get_cookie);
}

$(init);

Проверитьэто в jsfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...