2009-05-11 4 views
1

이미 열려있는 항목을 결정해야하는 시작 페이지가있는 응용 프로그램이 있으므로 다른 새 탭에서 이미 열려있는 항목이 다시 열리지 않습니다. Firefox에서는 window.sessionStorage를 사용하여 열려있는 페이지의 제목을 저장 한 다음 window.opener와 다음 코드를 사용하여 목록에서 제목을 제거함으로써이 작업을 수행 할 수있었습니다. Javascript에서 window.sessionStorage를 대체 하시겠습니까?

if (window.sessionStorage) { 
    if (window.sessionStorage.getItem(code)) { 
     return; // page already open 
    } 
    else { 
     window.sessionStorage.setItem(code, code); 
     window.open("Sheet.aspx", "_blank"); 
    } 
} 

그리고 열려있는 페이지에

Gecko Session Storage Info Page

: 이것은 IE에서 작동하지 않습니다

function signalPageExit() { 
    if (window.opener.sessionStorage) { 

    window.opener.sessionStorage.removeItem(
    document.getElementById("runcode").childNodes[0].textContent); 
} 

그래서 쿠키 전략을 사용하기로 결정하지만, 쿠키가 성공적으로 삭제되지 않았다 따라서 동적으로 시작된 페이지의 코드에서 쿠키가 만료되어 쿠키가 만료 될 때까지 시작 페이지에서 페이지를 다시 열 수 없습니다.

나의 두 번째 시도는 그것이 존재하지 않을 때 내 자신의 sessionStorage를 정의하는 것이 었습니다. 즉,이 모습 :

function setStoreItem(name, val) { 
     this.storage[name] = val; 
    } 

    function getStoreItem(name) { 
     return(this.storage[name]); 
    } 

    function removeStoreItem(name) { 
     this.storage[name] = null; 
    } 

    function sesStorage() { 
     this.storage = new storageData(); 
     this.setItem = setStoreItem; 
     this.getItem = getStoreItem; 
     this.removeItem = removeStoreItem; 
    } 

    // storage object type declaration 
    function storageData() { 

    } 

    // IE 7 and others 
    else { 
     window.sessionStorage = new sesStorage(); 

     window.sessionStorage.setItem(code, code); 
     window.open("Sheet.aspx", "_blank"); 
    } 

을하지만, 내 시작 페이지가 다시 게시 할 때 실제 세션 저장, 윈도우의 일반 객체 따라서 포스트 백에서 살아있어하지 않았다 특별했다 생성 된 페이지 제목의 목록을 보인다 쓸어 버렸다.

그래서 지금이 방법을 찾고 있습니다. 사용자 요청을 기반으로 동적 페이지를 만드는 scoresheets.aspx라는 시작 페이지가 있습니다. 이 페이지는이 작업을 수행하기 위해 수정할 수있는 상당한 양의 자바 스크립트 코드를 공유합니다.

사용자가 다시 열려고 시도했을 때 실행 된 페이지를 새로 고치려는 것이 아니라 열린 페이지의 제목을 감지하거나 window.opener를 사용하여 동일한 지속성과 통신하는 방법이있는 경우 그 sessionStorage는, 나는 그것을 사용하게되어 기쁠거야.

답변

3

Eric Garside의 jStore plugin은 여러 클라이언트 측 스토리지 엔진에 jquery 기반 API를 제공합니다.

+0

전 jStore를 설정했지만 Jstore Javascript에서 내부적으로 오류가 발생합니다. 나는 구글 코드에 문제를 제기했다. 그래서 거기에 무슨 일이 일어나고 있는지 알 수 있기를 바란다. –

+0

플래시 엔진을 직접 사용해 보지 않았습니다. 방금 ie 엔진 (#userdata)을 확인했고 ie8을 통해 ie6에서 작동합니다. –

-1

쿠키 전략을 사용하고 창 (탭)을 닫을 때 쿠키가 만료되도록 설정해야합니다. 브라우저에서 작동해야합니다.

+1

쿠키가 서버로 전송됩니다. 저장할 데이터가 많으면 모든 것을 정말 느리게 만듭니다. – tghw