有可能永久改变javascript变量吗?例如,如果我设置变量X并使其等于1,则按钮的onClick将该变量更改为2。如何才能使该变量在刷新页面时保持为2?
发布于 2013-04-25 12:40:44
除了cookies和localStorage
之外,至少还有另外一个地方可以存储“半持久化”客户机数据:window.name
。分配给window.name
的任何字符串值都将一直保留到窗口关闭。
要对其进行测试,只需打开控制台并键入window.name = "foo"
,然后刷新页面并键入window.name
;它将以foo
作为响应。
这是一个小技巧,但如果您不希望每次请求都将充满不必要数据的cookies发送到服务器,并且无论出于何种原因(遗留客户端)都不能使用localStorage
,那么可以考虑使用cookie。
window.name
还有另一个有趣的属性:它对从其他域提供服务的窗口是可见的;它不像window
的几乎所有其他属性一样受到同源策略的约束。因此,除了在用户导航或刷新页面时将“半持久化”数据存储在那里之外,您还可以将其用于无CORS的跨域通信。
注意,window.name
只能存储字符串,但是随着JSON
的广泛使用,即使对于复杂的数据,这也不是什么大问题。
发布于 2013-04-25 12:22:20
您将不得不使用cookie来存储跨页面刷新的值。您可以使用许多基于javascript的cookie库中的任何一个来简化cookie访问,如this one
如果您只想支持html5,那么您可以考虑像localStorage/sessionStorage这样的Storage api
示例:使用localStorage和cookies library
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);
}
}
发布于 2013-04-25 12:23:05
您可以通过在客户端存储cookie来做到这一点。
https://stackoverflow.com/questions/16206322
复制相似问题