ewein
ewein

Reputation: 2735

Check if its users first time on site using Javascript

I am trying to find out if its the users first time on my webpage. I am currently storing a variable in local storage and checking if its null or not but it doesn't seem to work in Internet Explorer. What other method can I use to accomplish this?

    var str_count = localStorage.getItem("count");
    if (str_count == null || str_count == "null")
    {
               // Do something
             }

Upvotes: 0

Views: 3620

Answers (3)

Setting cookie with long expiration date is definitely more reliable that using localStorage as it is not yet supported by older browsers.

Check this code:

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

Read more about cookies here.

Upvotes: 1

gcochard
gcochard

Reputation: 11744

You can set a cookie with

document.cookie = name + "=" + value + "; expires=" + exp + "; path=/";

More info here: http://www.w3schools.com/js/js_cookies.asp

More info here: http://www.quirksmode.org/js/cookies.html

Upvotes: 1

Danilo Valente
Danilo Valente

Reputation: 11352

As @Greg said, the better solution is to set and get cookie values. Here's two functions to do this:

setCookie = function(){
    var args = arguments,
    name = (args[0] ? args[0] : '') + '=',
    _value = args[1] ? escape(args[1]) : '',
    value = _value + ';',
    expires = args[2] ? 'expires=' + args[2].toUTCString() + ';' : '',
    path = args[3] ? 'path=' + args[3] + ';' : '',
    domain = args[4] ? 'domain=' + args[4] + ';' : '',
    secure = args[5] ? 'secure;' : '',
    newCookie = name + value + expires + path + domain + secure;
    document.cookie = newCookie.match(/[a-z||A-Z]/) ? newCookie : ''
    return _value;
},
getCookie = function(name){
    if(!name || name.replace(/[^a-z|0-9|çáéíóúãõâêîôûàèìòùäëïöü]/,'')=='*') return document.cookie;
    var ck = ' ' + document.cookie + ' ',
    pos = ck.search(' ' + name + '='),
    pos = (pos!=-1) ? pos + 1 : ck.length,
    ck = ck.substring(pos-1,ck.length),
    end = (ck.search('; ')!=-1) ? ck.search('; ') : ck.length,
    value = ck.substring(((ck.search('=')!=-1) ? (ck.search('=')+1) : end),end);
    return unescape((value[value.length-1]==' ') ? value.substring(0,value.length-1) : value);
}

They're crossbrowser functions. To use getCookie function, just use the name parameter, and with the setCookie function, use the name,value,expires,path,domain,secure parameters

Upvotes: 0

Related Questions