在3se之后执行一个功能

时间:2013-10-13 15:58:54

标签: javascript jquery

我想在3秒之后重新加载页面,我们访问了页面而没有重复

我尝试过使用

var t;
t=setTimeout(function(){

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

但页面正在连续加载

所以我试着这样做

 var t;
 t=setTimeout(function(){
 clearTimeout(t);
           window.location.reload();
 },3000);
这个技巧也没有奏效 任何人都可以帮助我如何在3秒之后重新加载页面而不重复

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

好吧,当你刷新页面时,会加载一个全新的页面,所以你实际上不能这样做。

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

  • 向某方脚本发送AJAX请求
  • 在Cookie中保存状态
  • 使用HTML5 LocalStorage

localStorage是最简单的:

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

关于localStorage要记住的事情:

  • 它只适用于新的相对较新的浏览器(超过2年的东西 以前很可能会有问题,但现代问题不是问题 浏览器)
  • 它只以字符串格式保存值
  • 它只保存当前域中的值,因此值 local 到您所在的页面:)