'sessionStorage'에 해당되는 글 1건

  1. 2007.11.04 Javascript 로컬 스토리지 - TGlobalStorage extention
TGlobalStorage extention 입니다.

FireFox 의 sessionStroage 와 globalStorage 를 호환시켜 크로스 브라우징 localStorage 역활을 할 수 있도록 개발중입니다.

Prototype.js 기반으로 개발하려다.  프레임웤에 의존적으로 작동하면 별 도움이 되지 않는 부분이기에 따로 window 하위 객체로 바로 써버렸습니다.

FF의 sessionStorage와 globalStorage 에 override가 되지 않아 조금 문제가 있습니다.

아래의 요소는 그냥 sessionStorage의 역활에 불과합니다. 페이지가 변경(리프레쉬, 리로딩)되면 날아가버리는 global variable 과 같은 의미입니다.

/**
 * @projectDescription Rhio Ajax Application 2007 - Global Storage extention
 *
 * @author riho.kim@pandora.tv, tizie80@nate.com
 * @messanger (msn)kim2000version@hotmail.com, (nate)tizie80@nate.com
 * @version 0.0.1
 * @usage var TClass = ;
 *
 * @sdoc
 * @namespace
 * @import
 */

/* clien-side globalStorage for cross-browser IE is {}, FF is persistent storage "globalStorage"*/

/* sessionStorage is FF's major Storage Object & globalStorage is FF's persistent storage Object
  * It's two Storage Object is supported only FireFox 2.0 more
  * page is http://cse-mjmcl.cse.bris.ac.uk/blog/2006/10/30/1162236580795.html
  */

window.TStorage = {    
    STORAGE_DEFAULT_LENGTH : 0,
    
    setup : function() {
        this.STORAGE_DEFAULT_LENGTH = this.size();
    },
    
    /* public */
    setItem : function(key, value) {
        this[key] =  value;
    },
    
    /* public */
    getItem : function(key) {
        return this[key];
    },
    
    /* public */
    removeItem : function(key) {
        if(this.isKey(key)) delete this[key];
    },
    
    /* public */
    hasItem : function(key) {
        return typeof this.getItem(key) != 'undefined';
    },
    
    /* public */
    keys : function() {
        var key = [];
        for(property in this) key.push(property);
        return key;
    },
    
    /* public */
    values : function() {
        var value = [];
        for(property in this) value.push(this[property]);
        return value;
    },
    
    /* public */
    size : function() {
        return this.keys().length - this.STORAGE_DEFAULT_LENGTH;
    },
    
    /* public debug method */
    viewStorageTable : function() {
        var keys = this.keys();
        var value = this.values();
        
        var str = [];
        for(var i=0, limit=keys.length; i<limit; i++) {
            str.push('key : <b>'+ keys[i] +'</b>, value : <b>'+ values[i] +'</b><br />');
        }
        var o = document.createElement('div');
            o.style.cssText = this.visibilityStyles;
            o.innerHTML(str.join(''));
        
        document.body.appendChild(o);
    },
    
    visibilityStyles: 'position: absolute; top:0px; left:0px; z-index:9999;'
};
신고
Posted by Rhio.kim