Click here to Skip to main content
15,894,540 members
Articles / Programming Languages / Javascript

JavaScript Cookie Manager

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
30 Oct 2012CPOL2 min read 20K   214   5  
A powerful, stand-alone Javascript cookie manager.
var logger = function () {
    var loggingConsole = document.getElementById('console');
    return {
        log: function (msg, isImportant) {
            var span = document.createElement('span');

            if (isImportant) {
                span.innerHTML = msg + '<br/>';
                span.className += 'importantMessage';
            }
            else {
                span.innerHTML = msg;
            }

            loggingConsole.appendChild(span);
            loggingConsole.scrollTop = loggingConsole.scrollHeight;
        },
        clear: function () {
            loggingConsole.innerHTML = '';
        }
    };
};

function registerEvent(ctrl, event, handler, propagate) {
    if (ctrl.addEventListener) {
        ctrl.addEventListener(event, handler, propagate);
    } else {
        ctrl.attachEvent('on' + event, handler);
    }
}

function saveCookiesEventHandler(e) {
    var domain = document.getElementById('txtCookieDomain').value;
    var cookieManager = new Cookies(domain, '', '', false);
    var cookieName = document.getElementById('txtCookieName').value;
    var cookieValue = document.getElementById('txtCookieValue').value;
    cookieManager.write(cookieName, cookieValue);
}

function clearCookiesEventHandler(e) {
    var domain = document.getElementById('txtCookieDomain').value;
    var cookieManager = new Cookies(domain, '', '', false);
    var cookies = cookieManager.keys();

    for (var key = 0; key < cookies.length; key++) {
        var cookie = cookies[key];
        logger().log('Located cookie \'' + cookie.Cookie + '\'. Attempting to delete...');

        cookieManager.remove(cookie.Cookie);     

        if (cookieManager.read(cookie.Cookie)) {
            logger().log('Failed to delete cookie \'' + cookie.Cookie + '\'. Please check your domain and path and try again.');
        } else {
            logger().log('Cookie \'' + cookie.Cookie + '\' deleted successfully!');
        }

        
    }
}

function saveSubCookiesEventHandler(e) {
    var domain = document.getElementById('txtCookieDomain').value;
    var cookieManager = new Cookies(domain, '', '', false);
    var cookieName = document.getElementById('txtCookieName').value;
    var subCookieKey = document.getElementById('txtSubCookieKey').value;
    var cookieValue = document.getElementById('txtCookieValue').value;
    cookieManager.writeKey(cookieName, subCookieKey, cookieValue);
}

function readCookiesEventHandler(e) {
    var domain = document.getElementById('txtCookieDomain').value;
    var cookieName = document.getElementById('txtCookieName').value;
    var cookieManager = new Cookies(domain, '', '', false);
    var cookieValue = cookieManager.read(cookieName);

    if (cookieValue) {
        logger().log(cookieValue);
    }
    else {
        logger().log('Cookie \'' + cookieName + '\' not found in domain \'' + cookieManager.domain() + '\'.');
    }

}

function readSubCookiesEventHandler(e) {
    var domain = document.getElementById('txtCookieDomain').value;
    var cookieManager = new Cookies(domain, '', '', false);
    var cookieName = document.getElementById('txtCookieName').value;
    var subCookieKey = document.getElementById('txtSubCookieKey').value;
    var cookieValue = cookieManager.readKey(cookieName, subCookieKey);
    if (cookieValue) {
        logger().log(cookieValue);
    }
    else {
        logger().log('Subkey \'' + subCookieKey + '\' of cookie \'' + cookieName + '\' not found in domain \'' + cookieManager.domain() + '\'.');
    }

}

function showAllCookiesEventHandler(e) {
    var domain = document.getElementById('txtCookieDomain').value;
    var cookieManager = new Cookies(domain, '', '', false);
    var allKeys = cookieManager.keys();

    if (allKeys && allKeys.length > 0) {
        for (var i = 0; i < allKeys.length; i++) {
            var cookie = allKeys[i];
            logger().log(cookie.Cookie + ': ' + cookieManager.read(cookie.Cookie));
            if (cookie.Keys && cookie.Keys.length > 0) {
                for (var h = 0; h < cookie.Keys.length; h++) {
                    var key = cookie.Keys[h];

                    logger().log(key + ': ' + cookieManager.readKey(cookie.Cookie, key), true);
                }
            }
        }
    }
    else {
        logger().log('No cookies found.');
    }
}

function clearConsoleEventHandler(e) {
    logger().clear();
}

function windowLoadedEventHandler(e) {
    var btnReadCookies = document.getElementById('btnReadCookies');
    var btnClearConsole = document.getElementById('btnClearConsole');
    var btnSaveCookies = document.getElementById('btnSaveCookies');
    var btnClearCookies = document.getElementById('btnClearCookies');
    var btnSaveSubCookies = document.getElementById('btnSaveSubCookies');
    var btnReadSubCookies = document.getElementById('btnReadSubCookies');
    var btnShowAllCookies = document.getElementById('btnShowAllCookies');

    registerEvent(btnReadCookies, 'click', readCookiesEventHandler, false);
    registerEvent(btnReadSubCookies, 'click', readSubCookiesEventHandler, false);
    registerEvent(btnClearConsole, 'click', clearConsoleEventHandler, false);
    registerEvent(btnSaveCookies, 'click', saveCookiesEventHandler, false);
    registerEvent(btnClearCookies, 'click', clearCookiesEventHandler, false);
    registerEvent(btnSaveSubCookies, 'click', saveSubCookiesEventHandler, false);
    registerEvent(btnShowAllCookies, 'click', showAllCookiesEventHandler, false);
}

registerEvent(window, 'load', windowLoadedEventHandler, false);

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
William Anderson is a Project Analyst for a moving and logistics company in Fort Smith, AR. He has been working in the development community since 2007, where he primarily focuses on .NET development using C# and VB.NET.

Comments and Discussions