如何自动重新加载网页
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>
我希望我的网站页面在首次打开时重新加载 一次。为此,我在 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>