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