Enjoy Development

지식관리, 메모장, 기억저장소, 참고자료, ...

JavaScript Cookie Class

2014.02.17 15:49 | 조회 수 : 40096

쿠키 값 읽기/저장을 위한 클래스.

 

/**
 * 쿠키 값 읽기/저장을 위한 클래스.
 * @param {string} path 쿠키 경로 (Optional, 기본값 : URL 경로)
 */
function Cookie(path) {
    /**
     * 쿠키 경로.
     */
    this.path = null;

    if (typeof(path) != "undefined") {
        this.path = path;
    }

    /**
     * 쿠키값을 읽는다.
     *
     * @param {string} name 쿠키 이름.
     */
    this.getValue = function(name) {
        var items = document.cookie.split("; ");
        var item;
        var val = "";

        for(var i=0; i<items.length; i++) {
            item = items[i].split("=");

            if( item[0] == name ) {
                val = (item.length == 1 ? "" : unescape(item[1]));
                break;
            }
        }

        return val;
    };

    /**
     * 쿠키값을 지운다.
     *
     * @param {string} name 쿠키 이름.
     */
    this.clearCookie = function(name) {
        this.setValue(name, null);
    };

    /**
     * 쿠키값을 저장한다.
     *
     * @param {string} name 쿠키 이름
     * @param {string} val 쿠키 값 (null 또는 빈 문자열로 넘기면 쿠키를 지운다.)
     * @param {string} days 쿠키 유지 일자 (Optional, 기본값 : 브라우저 닫으면 사라짐)
     */
    this.setValue = function(name, val, days) {
        var expires = null;

        if (val == null) {
            val = "";
        }

        if (typeof(days) == "undefinec") {
            days = 0;
        }

        if( val == "" ) {
            // 쿠키를 삭제하기 위해 과거 날짜로 세팅
            expires = new Date();
            expires.setDate(expires.getDate() - 1);
        } else if (days > 0) {
            expires = new Date();
            expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
        }

        if( val == "" ) {
            expires = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            //expires.before(1,0,0,0,0,0,0);
            var expires = "; expires=" + date.toGMTString();
            expires.setDate(expires.getDate() - 1);
        }

        document.cookie = name + "=" + escape (val)
                        + ((expires == null) ? "" : ("; expires=" + expires.toGMTString()))
                        + ((this.path == null) ? "" : ("; path=" + this.path));
    };
}

 

Powered by EnjoyDev | Xpress Engine | DNS Powered by DNSEver.com