在页面中保留javascript变量?

时间:2009-12-30 18:26:35

标签: javascript

有没有办法可以在各个页面中保存javascript变量?假设在页面A中我正在设置window.someVar = 5。然后我通过单击A中的超链接移动到页面B,并执行alert(window.someVar)之类的操作 - 我应该显示一个消息框5.是否有一种技术可以保持someVar这样的... ?

7 个答案:

答案 0 :(得分:112)

您可以使用窗口名称window.name来存储信息。这称为JavaScript session。但只有使用相同的窗口/标签时,它才有效。

答案 1 :(得分:40)

为了完整起见,还要了解本地存储功能& sessionStorage of HTML5。所有现代浏览器的最新版本都支持这些浏览器,并且比cookie更容易使用且不那么繁琐。

http://www.w3.org/TR/2009/WD-webstorage-20091222/

https://www.w3.org/TR/webstorage/。 (第二版)

以下是使用sessionStorage和localStorage设置和获取值的示例代码:

 // HTML5 session Storage
 sessionStorage.setItem("variableName","test");
 sessionStorage.getItem("variableName");


//HTML5 local storage 
localStorage.setItem("variableName","Text");
// Receiving the data:
localStorage.getItem("variableName");

答案 2 :(得分:27)

我建议你看看这个图书馆:

我非常喜欢它,它支持各种存储后端(从cookie到HTML5存储,Gears,Flash等等),它的用法实际上是透明,你没有必须知道或关心使用哪个后端,库将根据浏览器功能选择合适的存储后端。

答案 3 :(得分:13)

是的,使用Cookies。但是要小心,不要在它们中放太多(我认为有4kb的限制)。但是有一些变量是可以的。

如果您需要存储的内容远不止这些,请在另一个答案中查看@ Annie的精彩提示。对于小时间数据存储,我会说Cookies是最简单的事情。

请注意,Cookie存储在客户端。

答案 4 :(得分:9)

您可以使用HTML5存储,Flash存储或Gears来保留值。 dojo storage库为此提供了一个很好的包装器。

答案 5 :(得分:6)

我推荐网络存储空间。例如:

// Storing the data: localStorage.setItem("variableName","Text"); // Receiving the data: localStorage.getItem("variableName");

只需将variable替换为您的变量名称,将text替换为您要存储的内容。据W3Schools说,它比饼干好。

答案 6 :(得分:1)

您可以使用http://rhaboo.org作为localStorage的包装。它存储复杂的对象,但不像大多数这样的库那样只是对整个事物进行字符串化和解析。如果你想存储大量数据并添加数据或以小块的形式更改数据,这真的是效率低下的。此外,JSON丢弃了很多重要的东西,比如数组的非数字属性。

在rhaboo你可以写这样的东西:

var store = Rhaboo.persistent('Some name');

store.write('count', store.count ? store.count+1 : 1);

var laststamp = store.stamp ? store.stamp.toString() : "never";
store.write('stamp', new Date());

store.write('somethingfancy', {
  one: ['man', 'went'],
  2: 'mow',
  went: [  2, { mow: ['a', 'meadow' ] }, {}  ]
});

store.somethingfancy.went[1].mow.write(1, 'lawn');
console.log( store.somethingfancy.went[1].mow[1] ); //says lawn

顺便说一下,我写了rhaboo