-2

我想在 3 秒后重新加载页面,我们访问了该页面而不重复

我尝试使用

var t;
t=setTimeout(function(){

     window.location.reload();
},3000);

但页面正在不断加载

所以我试过这样

 var t;
 t=setTimeout(function(){
 clearTimeout(t);
           window.location.reload();
 },3000);

这个技巧也行不通
,任何人都可以帮助我如何在 3 秒后重新加载页面而不重复

4

3 回答 3

1

这是因为当页面重新加载时,脚本也会重新加载,因此浏览器会再次运行它。一种解决方案是使用 cookie。

function SetMeow() {
 var a = new Date();
 a.setTime(a.getTime() + 9999999999999999999);
 document.cookie = "Cat=meow;expires="+a.toGMTString();
}        
var b = document.cookie.replace(/(?:(?:^|.*;\s*)Cat\s*\=\s*([^;]*).*$)|^.*$/, "$1");
if(b!="meow"){
var t=setTimeout(function(){
     SetMeow();
     window.location.reload();
},3000);
}
于 2013-10-13T16:01:32.403 回答
0

您将需要一个标志,使用本地存储或 cookie,并在您重新加载页面一次时进行更改。或者每次页面加载时都会重新设置新的间隔。

于 2013-10-13T16:04:11.820 回答
0

好吧,当您刷新页面时,会加载一个全新的页面,因此您实际上无法这样做。

简而言之,您需要在页面之间保存状态,这可以通过多种方式完成:

  • 向某个脚本发送 AJAX 请求
  • 将状态保存在 Cookie 中
  • 使用 HTML5 本地存储

localStorage 是最简单的:

var t = setTimeout (function () {
  if (localStorage.dontReload && JSON.parse(localStorage.dontReload)) { return }
  window.location.reload();
  localStorage.dontReload = true;
}, 3 * 1000);

关于 localStorage 的注意事项:

  • 它只适用于新的相对较新的浏览器(超过 2 年前的东西很可能会出现问题,但在现代浏览器中这不是问题)
  • 它仅以字符串格式保存值
  • 它只保存当前域上的值,因此这些值将是您所在页面的本地值:)
于 2013-10-13T16:07:00.860 回答