坚持跨页面的JavaScript变量?

有没有一种方法,我们可以坚持跨各种网页的JavaScript变量? 假设在页面AI设置window.someVar = 5 。 然后,我移动到页面B,通过点击A中的超链接,并做一些像alert(window.someVar) – 我应该得到一个消息框显示5.是否有一种技术来坚持someVar这样的…?

您可以使用窗口的名称window.name来存储信息。 这被称为JavaScript会话 。 但是只要使用相同的窗口/标签,它就可以工作。

为了保持完整性,还需要研究HTML5的本地存储功能和sessionStorage。 这些在所有现代浏览器的最新版本中都得到支持,并且比Cookie更容易使用,也更简单。

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

以下是使用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"); 

我建议你看看这个库:

  • PersistJS

我真的很喜欢它,它支持各种存储后端(从cookies到HTML5存储,Gears,Flash等等),它的使用非常透明 ,您不必知道或关心使用哪个后端库将根据浏览器功能选择正确的存储后端。

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

如果你需要存储更多的东西,请在另一个答案中查看@ Annie的重要提示。 对于小时间的数据存储,我会说饼干是最简单的事情。

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

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

我建议网络存储。 例:

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

只需用您想要存储的变量名称和text替换variable即可。 根据W3Schools,这比饼干好。

您可以使用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