[Polyfill] LocalStorage

LocalStorage 는 일단 모든 웹 브라우저에서 지원합니다.

하지만 IE 7 이하는 지원하지 않습니다.

하지만 MS는 영구히 보관 가능한 별도의 저장소 개념을 이미 만들어 놨습니다.

바로 #default#userData 입니다. 이게 뭐냐구요? 몰라요.

어쨌든 영구 보관 개념이 있기 때문에 IE7 이하도 사용 가능합니다.

웹 사이트에 윈도우 업데이트에서 사용하기도 했죠.

사용법입니다.

var b=document.createElement(‘b’);

b.style.behavior=’url(“#default#userData”)’;

document.body.appendChild(b);

//기존 localStorage 보관소의 데이터를 가져옴

b.load(‘localStorage’);

//localStorage에 새로운 키/값 등록

b.setAttribute(‘key’,’value’);

b.save(‘localStorage’);

//localStorage 에 저장된 key 의 값을 불러옴

var val=b.getAttribute(‘key’);

이렇게 씁니다.

따라서 localStorage 가 없는 구닥다리 IE를 배려하고자 한다면 아래와 같이 꾸미시면 되겠습니다.

if(!window.localStorage)

    window.localStorage = (function () {

        var userdataKey = ‘localStorage’,

            userdata = document.createElement(‘b’);

        userdata.style.display = ‘none’;

        userdata.style.behavior = ‘url(“#default#userData”)’;

        // userdata.addBehavior(‘#default#userdata’);

        document.body.appendChild(userdata);

        userdata.load(userdataKey);

        return {

            setItem: function (key, val) {

                userdata.setAttribute(key, val);

                userdata.save(userdataKey);

            },

            removeItem: function (key) {

                userdata.removeAttribute(key);

                userdata.save(userdataKey);

            },

            getItem: function (key) {

                return userdata.getAttribute(key);

            }

        }

    })();

하지만 안타깝게도 sessionStorage의 대안은 없습니다. 걍 쿠키드셈. 끝.

추가사항:

보통 localStorage 는 도메인당 5MB입니다. 하지만 IE의 영구저장소는 도메인당 1MB로 제한됩니다.

composite / 2012년 11월 13일 / 미분류
태그:, , , ,

Comments

  1. toms sale - 2013년 4월 27일 @ 2:09 오후

    운명사랑을 잘 모르겠어

    Reply
  2. longchamp - 2013년 4월 27일 @ 4:20 오후

    닫혀있던 나의 어두운 마음 모두 네게 열게 예이예

    Reply
  3. doudoune abercrombie - 2013년 5월 2일 @ 4:44 오후

    신체적 특징과직업

    Reply
  4. abercrombie et fitch - 2013년 5월 2일 @ 10:11 오후

    창의성 요소중 인성의 중요성을 나타내는 속담 분석

    Reply

답글 남기기

Your email address will not be published / Required fields are marked *