如何自动重新加载网页

How to automatically reload a web page

我希望我的网站页面在首次打开时重新加载 一次。为此,我在 javascript 文件中编写了此函数...

var i;
$(document).ready(function(){
    for ( i=0;i<1;i++){
        if(i===0){
            location.reload();
            break;
        }  
    }
});

但是页面不断地重新加载,就好像上面的函数是递归函数一样。
我该怎么做?

P.S 我这样做是因为 问题。

您必须设置 cookie(或使用 javascript 的 localStorage),或使用 xhr 来检索远程服务器上保存的值。

如果你想使用cookies,就这么简单

document.cookie = "username=John Doe";

其中 document.cookie 是形式为 (x=y;a=b;n=z)

的查询字符串

如果您希望每次用户访问时都重新加载页面,请务必在设置页面重新加载后完成任何必要的处理后取消设置 cookie。

这是正在发生的事情:

  • 页面首次加载,jQuery 调用 document.ready 事件的任何处理程序

  • 页面重新加载

  • 再次调用document.ready

  • 重复

出于好奇,你为什么要这样做?为什么你有一个 for 循环将 运行 进行一次迭代?


此外,据我所知,要回答您的问题,确保页面不会重新加载的唯一方法是使用持续约 5 秒的 cookie。然后,在 document.ready 上检查该 cookie,如果它存在则不要重新加载。

$( window ).load(function() {
    if (window.location.href.indexOf('reload')==-1) {
         window.location.replace(window.location.href+'?reload');
    }
});
<script type='text/javascript'>
  (function() {
    if( window.localStorage ) { 
      if( !localStorage.getItem('firstLoad') ) { 
        localStorage['firstLoad'] = true;
        window.location.reload(); 
      } else 
        localStorage.removeItem('firstLoad'); 
    } 
  })();
</script>

你的代码每次执行 $(document).ready(),所以你的循环是无限的也就不足为奇了——每次加载都以就绪状态完成。

如果您提供更详细的要求,我们可以在不使用 window 对象作为数据持有者的情况下解决它。这是个糟糕的方法,但您可以将其设置为测试。

Window 对象存储变量不依赖于重新加载,因为它高于文档。

让我们试试:

if( window.firstLoad == undefined  ){
    // yours code without any loop
    // plus:
    window.firstLoad = false;
}

您可以使用 localStorage API。

还要检查此 link,它提供了有关 window 对象变量的更多信息: Storing a variable in the JavaScript 'window' object is a proper way to use that object?

代码没问题。但是,如果该页面是从另一个带有 link 到 id (.../page.html#aa) 的页面打开的,则该代码仅适用于 firefox。使用其他浏览器重新加载页面而不去id。 (对不起我的英语)。

我用这段代码找到了解决方案。假定页面刷新时间不早于一小时。否则,将分钟添加到 oggindex 变量。

<script>
var pagina = window.location.href; 
var d = new Date();
var oggiindex = d.getMonth().toString()+'-'+d.getDate().toString()+'-'+d.getHours().toString();
if (localStorage.ieriindex != oggiindex)
    {
    localStorage.setItem("ieriindex", oggiindex);
    window.location.replace(pagina);
    }
 </script>