Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to test if a javascript cookie has expired?

Is it possible to test if a javascript cookie has expired using?

I need to do a few thing conditionally and two of those conditions are overlapping for which if it could be tested whether a cookie has expired then it will be easier for me to get things done.

I am using jquery-1.5.js and jquery.cookies.js plugin.

Thanks.

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
    }

});
like image 210
skip Avatar asked Jan 30 '12 23:01

skip


3 Answers

A browser will automatically remove any cookie once it expires, so all you need to do is check whether the cookie exists or not.

like image 197
Caleb Joseph Avatar answered Nov 05 '22 23:11

Caleb Joseph


if( $.cookie('yourCookie') === null ) {
    // EXPIRED
} else {
    // DO SOMETHING ELSE
}

Or like this using Ternary operator:

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

https://github.com/carhartl/jquery-cookie (No longer maintained, archived)
https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie
https://github.com/js-cookie/js-cookie

like image 11
Roko C. Buljan Avatar answered Nov 05 '22 23:11

Roko C. Buljan


If you say that the browser did not remove the cookie, it's probably because your time zone is different from UTC.

like image 4
dmr Avatar answered Nov 05 '22 23:11

dmr