>웹 프론트엔드 >JS 튜토리얼 >javascript globalStorage 클래스 code_javascript 기술

javascript globalStorage 클래스 code_javascript 기술

WBOY
WBOY원래의
2016-05-16 18:51:461237검색
globalStorage
이는 HTML5에서도 제안됩니다. 브라우저를 닫은 후에도 globalStorage를 사용하여 저장된 정보는 계속 유지될 수 있으며 저장 용량은 IE의 사용자 데이터보다 훨씬 큽니다. sessionStorage와 마찬가지로 도메인의 모든 페이지에 저장된 정보는 모든 페이지에서 공유될 수 있습니다.
범위
globalStorage['z.baidu.com'] z.baidu.com 아래의 모든 페이지는 이 공간을 사용할 수 있습니다.
globalStorage['baidu.com'] baidu.com 아래의 모든 페이지는 이 공간을 사용할 수 있습니다. 이 공간
globalStorage['com']: 모든 com 도메인 이름이 이 공간을 공유할 수 있습니다
globalStorage['']: 모든 페이지가 이 공간을 사용할 수 있습니다
이제 Firefox는 현재 도메인의 경우에만 globalStorage 저장 공간을 지원합니다. 공개 도메인이 사용되면 "보안 오류" 코드: "1000"과 유사한 오류가 발생합니다.
만료 시간
HTML5의 설명에 따르면 globalStorage는 보안 문제가 있거나 사용자가 요청할 때만 만료됩니다. 브라우저는 스크립트에서 액세스하는 데이터를 삭제하지 않아야 하며 사용자 데이터는 사용자- 쓰기 가능.
따라서 우리 스크립트는 만료 시간을 제어할 수 있어야 합니다. globalStorage의 특정 영역에 만료 시간을 저장하고 로드 시 만료 여부를 확인할 수 있습니다. 이를 통해 특정 만료 시간 문제를 해결할 수 있습니다. 정도.
저장시 만료시간도 함께 저장됩니다
위 내용은 제가 온라인에서 찾은 정보입니다. IE 이외의 브라우저 "userdata"와 호환되도록 제가 직접 작성한
"userdata"를 개선했습니다. (UserData 사용 요약 참조) 이제 IE 및 globalStorage를 지원하는 브라우저와 호환됩니다.
코드 복사 코드는 다음과 같습니다.

function BehaviorUserdata(udObj)
{
var me = this;
if(CMInfo.Bs_Name=='IE') //userdata를 사용하여 IE에서 클라이언트 저장소 구현
{
var received = ''; //현재 로드된 파일 이름

this.udObj = getObject(udObj)
this.udObj.style.behavior = 'url(#default #userdata )';
this.value = this.udObj.value;
this.inhtml = this.udObj.innerHTML;

//파일이 존재하는지 확인하고 est=undefine을 반환합니다. 그렇지 않으면 false를 반환합니다.
this.exist = function(filename){
try{
me.udObj.load(filename);//파일 이름이 filename인 XML을
me.load에 로드합니다. ed = 파일 이름; > if( me.loaded=='' || me.loaded!=filename){me.exist(파일 이름);}
                return me.loaded; {
                                                                   ​return val==null?"":val; me.udObj.removeAttribute(atrib);
me.udObj.save(filename); filename이라는 XML 파일에 데이터를 반환합니다.
지정된 속성 값을 설정합니다.
this.setAtrib = function(filename,atrib,val,expire){
var etime = typeof(expire)=="undefine "?24*60*60:expire;
me.udobj.expires = me.Setexpire(etime);
me.udobj.setattribute(atrib, value;
me.udobj.save(파일 이름) ; 시리즈의 객체 데이터(예: 전체 XML 파일)가 만료됩니다.
this.remPartion = function(filename){
if(me.exist(filename))
{
me.udObj. 만료 = me.setExpire(-1);
me.udObj.save(파일 이름)
me.udObj.save(파일 이름);
//유효기간 설정
this.setExpire = function(sec){
var oTimeNow = new Date()
oTimeNow.setSeconds(oTimeNow.getSeconds() parseInt(sec));
return oTimeNow.toUTCString();
}
}else // globalStorage를 사용하여 비 IE에서 클라이언트 저장소 구현
{
var domain = document.domain; > // 지정된 속성 값 가져오기
this.getAtrib = function(filename,atrib){
var oTimeNow = new Date()
var etime =parseInt(window.globalStorage[domain][filename " __expire"] ); '';
                                        >              return window.globalStorage[domain][filename "__" atrib];                  ~       >            try{window.globalStorage.removeItem(filename "__" atrib);}catch(e){} //삭제
                                                                                                                                                            🎜> this.setAtrib = function(filename,atrib,val,expire){
var etime = typeof(expire)=="정의되지 않음"?24*60*60:exp 그렇군요
window.globalStorage[domain] [filename "__expire"] = me.setExpire(etime);
     window.globalStorage[domain][filename "__" atrib] = val; this.remPartion = function( filename){
me.remAtrib(filename,"expire");
return true;
}

/ /유효 기간 설정
this.setExpire = function(sec)
var oTimeNow = new Date();
oTimeNow.setSeconds(oTimeNow.getSeconds()parseInt(sec));
return oTimeNow.getTime();
                                   실제 프로젝트에서는 사용되지 않았습니다. , 그래서 호환성이나 안정성을 모르겠습니다. 네티즌들이 버그를 발견하면 지적해주세요. 감사해요
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.