重新加载页面后如何保留变量的值? [复制]
Posted
技术标签:
【中文标题】重新加载页面后如何保留变量的值? [复制]【英文标题】:How to retain value of the variable after the page is reloaded? [duplicate] 【发布时间】:2013-05-28 14:45:31 【问题描述】:我的代码中有函数,假设按下按钮时页面的刷新时间从 50 秒逐渐减少到 10 秒。这里是:
<div id="signin" onclick="pgeReload()"></div>
....
<script type="text/javascript">
var count=0;
function pgeReload()
if(count <= 4)
count++;
var times = count*10000;
var pospond = 50000-count;
setTimeout(function()window.location.reload(), pospond);
</script>
我的问题是页面的重新加载总是在 50 秒后发生,因为(如果我理解正确的话)变量 count
在页面重新加载时总是重新分配为 0。
我的问题是,即使在页面刷新后,计数值增加后,我还能保留它吗?
非常感谢所有可以帮助我的人。
带有html5的版本。但是,问题仍然是初始值。计数始终为 0
<script type="text/javascript">
var count=0;
function pagereload()
if(typeof(Storage)!=="undefined")
count++;
window.content.localStorage[key]=count;
var tempTime = parseInt(window.content.localStorage[key])*1000;
var pospond = 50000-tempTime;
setTimeout(function()window.location.reload(), pospond);
else
setTimeout(function()window.location.reload(), 30000);
</script>
【问题讨论】:
您可能会受益于使用 html5 会话存储 在这个特定的例子中如何使用它? 如果您在新标签页中打开同一页面会怎样? 【参考方案1】:您可以使用 HTML5 的localstorage。
window.content.localStorage[key]=value; //Saving
window.content.localStorage[key]; //Accessing
delete window.content.localStorage[key]; //Delete
其中 KEY = 您要存储的变量的名称,VALUE 是您要保存的字符串值。这仅支持保存字符串,但如果您需要保存对象,您可以使用 JSON 将对象“字符串化”。
所以你可以这样做:
<script type="text/javascript">
function pagereload()
if(typeof(Storage)!=="undefined")
var count=(window.content.localStorage[key])? parseInt(window.content.localStorage[key]): 0;
count++;
window.content.localStorage[key] = count;
var tempTime = count*1000;
var pospond = 50000-tempTime;
setTimeout(function()window.location.reload(), pospond);
else
setTimeout(function()window.location.reload(), 30000);
</script>
【讨论】:
我的html5不太好。此外,并非所有浏览器都支持它。你知道我怎么能在javascript中做到这一点吗?我的意思是任何等价物? 等一下我试试 任何浏览器都支持这个选项吗? 所有现代浏览器都支持 HTML5,即使在移动设备中也是如此。 Internet Explorer 8+、Firefox、Opera、Chrome 和 Safari 支持 Web 存储。仅 Internet Explorer 7 及更早版本,不支持网络存储。【参考方案2】:你最好看看浏览器cookie。
http://www.w3schools.com/js/js_cookies.asp
【讨论】:
好的。我会看看它。只需一秒钟【参考方案3】:您可以使用 cookie 或本地存储将数据永久存储在浏览器上。
然后,在同一域的未来页面中,您可以使用 javascript 检索先前的值。如果不使用这样的技术在本地存储数据,浏览器页面的每次重新加载都会完全重新开始。
您的另一个选择是代表当前用户将数据存储在服务器上。当客户端中的值发生更改时,您将对服务器进行 ajax 调用,以便可以将新值存储在服务器上。然后,您可以在以后的页面中使用 ajax 从服务器检索值,或者服务器可以在每次请求时将当前值放入页面中。您需要某种方法来识别当前用户(通常是用户登录),以便服务器可以检索正确的用户数据。
【讨论】:
【参考方案4】:使用 localstore 是个好主意,但如果您正在寻找简单的东西,您可以在重新加载页面时将计数放入查询字符串中,例如:
window.location.href = url + '?count=' + count
您可以根据变量检查计数或是否为初始加载:
window.location.search
例如,如果您使用?count=3
重新加载页面,则此变量的值将是?count=3
。您也可以将计数本身放在查询字符串中以简化解析,如下所示:
window.location.href = url + '?' + count
【讨论】:
我还应该把count = 0
放在代码中吗?
代码应该从window.location.search
得到count
。如果不存在,则使用count=0
,如果存在,则将其用作计数。以上是关于重新加载页面后如何保留变量的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.2 中重新加载页面后保留 select2 值?
如何在 chrome 控制台中保留该功能并在重新加载页面后运行它?