使用JavaScript,是否可以将页面上的所有变量保存到本地存储,然后在刷新或重新加载页面时重新加载存储的变量?我试图将变量保存到本地存储并在刷新页面时加载它们。这是我到目前为止所尝试过的:
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();
最佳答案
有点。如果你关心的变量都是全局的,并且不依赖于任何非全局数据,你可以看看这个问题:Fetching all (javascript) global variables in a page (感谢 Stegrex)
但这还不是故事的全部。在 JS 中,大量数据保存在隐藏范围内。这有两个问题:
- 这些对象可能无法从全局范围访问。
- 函数可能依赖于创建它们的范围内的数据,但无法从全局范围访问这些数据。
例如:
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;
}
关于javascript - 保存页面上的所有 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484532/