如何获得JSvariables保留页面刷新后的值?

是否有可能永久更改一个JavaScriptvariables? 如在,如果我设置variablesX,使等于1.然后onClickbutton更改该variables为2.我怎样才能得到该variables保持在刷新页面2?

这可能与window.localStorage (或window.sessionStorage )。 区别在于,只要浏览器保持打开状态, sessionStorage持续, localStorage在浏览器重新启动之后仍然存在。 持久性适用于整个网站,而不仅仅是一个页面。

当你需要设置一个应该反映在下一页的variables时,使用:

 var someVarName = "value"; localStorage.setItem("someVarName", someVarName); 

并在任何页面(如当页面已加载),得到它像:

 var someVarName = localStorage.getItem("someVarName"); 

如果没有存储值或存储的值, .getItem()将返回null

请注意,只有string值可以存储在此存储中,但是可以通过使用JSON.stringifyJSON.parse 。 从技术上讲,每当你调用.setItem() ,它将调用.toString()的值并存储。

MDN的DOM存储指南(链接如下),有解决方法/ polyfill,如果localStorage不可用,最终会回落到cookies等。

使用现有的,或创build自己的迷你库,抽象保存任何数据types(如对象文字,数组等)的能力不是一个坏主意。


参考文献:

除了cookie和localStorage ,至less还有一个地方可以存储“半持久性”客户端数据: window.name 。 您分配给window.name任何string值都将保留在窗口closures之前。

要testing它,只需打开控制台并键入window.name = "foo" ,然后刷新页面并键入window.name ; 它应该用foo来回应。

这是一个黑客,但如果你不希望cookie填充不必要的数据被发送到服务器与每个请求,并且如果你不能使用localStorage出于任何原因(遗留客户端),它可能是一个选项考虑。

window.name有另一个有趣的属性:从其他域的窗口可见; 几乎所有其他window属性都不受同源策略的约束。 因此,除了在用户导航或刷新页面时存储“半持久性”数据之外,您还可以将其用于无CORS跨域通信。

请注意, window.name只能存储string,但是JSON的广泛可用性,即使对于复杂的数据,这也不是什么大问题。

您将不得不使用cookie来存储整个页面刷新的值。 您可以使用许多基于javascript的cookie库中的任何一个来简化cookie访问,就像这样

如果您只想支持html5,那么您可以考虑Storage api,如localStorage / sessionStorage

例如:使用localStorage和cookies库

 var mode = getStoredValue('myPageMode'); function buttonClick(mode) { mode = mode; storeValue('myPageMode', mode); } function storeValue(key, value) { if (localStorage) { localStorage.setItem(key, value); } else { $.cookies.set(key, value); } } function getStoredValue(key) { if (localStorage) { return localStorage.getItem(key); } else { return $.cookies.get(key); } } 

您可以通过在客户端存储Cookie来做到这一点。