2013-03-18 3 views
0

JavaScript를 사용하면 페이지의 모든 변수를 로컬 저장소에 저장 한 다음 페이지를 새로 고치거나 다시로드 할 때 저장된 변수를 다시로드 할 수 있습니까? 변수를 로컬 저장소에 저장하고 페이지를 새로 고칠 때로드하려고합니다. 이것은 내가 지금까지 시도한 것입니다 :의페이지에 모든 JavaScript 변수 저장

http://jsfiddle.net/jZVWk/1/

function saveAllVariables(){ 
    //save all variables on the page to local storage 
} 

function loadAllVariables(){ 
    //load all variables on the page from local storage, and re-create them using their original names 
} 

loadAllVariables(); //load all variables that were previously stored 

if(typeof theName == "undefined"){ 
    var theName = prompt("Please enter your name:","Your name"); 
} 

if(typeof currentTime == "undefined"){ 
    var currentTime = new Date(); 
} 

document.body.innerHTML += "Time last visited: " + currentTime + "<br />"; 
document.body.innerHTML += "Your name : " + theName + "<br />"; 
var currentTime = new Date(); 
+1

확인이 아웃 : http://stackoverflow.com/questions/2226007/fetching-all-javascript-global-variables-in-a-page – Stegrex

+0

'for (창에서 소품) {console.log (소품); } 이제 모든 변수가 있습니다. 크로스 브라우저 호환성에도 좋지 않습니다. – Vinay

+0

@rid 모든 JavaScript 개체를 포함하여 전체 페이지의 상태를 저장하려고합니다. 웹 페이지의 상태를 저장하는 것에 대해 Stack Overflow에 관한 몇 가지 질문이 있지만 DOM의 상태를 저장하는 방법에 대해서만 논의하고 있으며 JavaScript 변수 저장에 대해서는 논의하지 않고 있습니다. –

답변

1

정렬. 관심있는 변수는 모든 글로벌 있으며, 이외의 글로벌 데이터에 의존하지 않는 경우에, 당신은이 질문에 확인하실 수 있습니다 : Fetching all (javascript) global variables in a page (감사 Stegrex)

을하지만 그 전체 이야기 아니에요. JS에서는 많은 양의 데이터가 숨겨진 범위에 보관됩니다. 여기에는 2 가지 문제가 있습니다.

  1. 전역 범위에서 개체에 액세스 할 수 없습니다.
  2. 기능은 작성한 범위의 데이터에 따라 달라질 수 있지만 전역 범위에서 액세스 할 수는 없습니다. 예를 들어

:

var globalThing = 'global'; 
var makeCounter = function() { 
    var count = 0; 
    return { 
    increment: function() { count++; }, 
    getCount: function() { return count; } 
    } 
} 
var counter = makeCounter(); 
counter.increment(); 
alert(counter.getCount()); 

이 코드의 상태 그대로 저장하고 재구성에 지금은 불가능하다. count은 폐쇄되어 있으며 전역 범위에서 숨겨져 있고 액세스 할 수 없습니다. 객체의 내부 상태를 검사하고 저장하는 더 지능적인 방법이 없으면이 구조를 유지할 수 없습니다.


아마도 이것은 취하고 싶은 방법이 아닙니다. 나는 당신이 원하는 것을 할 수있는 훨씬 깨끗한 방법이 있다는 것을 좋은 돈이라고 생각합니다. 그래서 질문이 생깁니다 : 왜 이것을 필요로합니까? 그리고 당신은 무엇을하려고합니까?

필요한 데이터를 명시 적으로 저장하고 전체 우주를 무차별 적으로 저장하려고하지 않는 것이 좋습니다. 귀하의 경우에는

, 그것은 단순히 다음과 같습니다

function saveOnlyImportantVaiables() { 
    localStorage.theName = theName; 
    localStorage.currentTime = currentTime; 
} 
+0

절대적으로 필요한 변수를 저장하는 것이 더 나을 것이라고 생각합니다. 그렇다면 페이지를 언로드 할 때 로컬 저장소에 필요한 변수를 어떻게 저장할 수 있습니까? –

+1

'localStorage.someKey = someValue'라고 쓰고,'var someValue = localStorage.someKey'라고 쓰면됩니다. –

+2

@AlexWayne 적어도 표준 메소드 인'getItem'과'setItem' – Ian