我希望我的网页在第一次打开时重新加载一次。我在我的javascript文件中写了这个函数...
var i;
$(document).ready(function(){
for ( i=0;i<1;i++){
if(i===0){
location.reload();
break;
}
}
});
但页面一次又一次地重新加载,好像上面的函数是递归函数一样 我该怎么做?
P.S我这样做是因为this问题。
答案 0 :(得分:2)
<script type='text/javascript'>
(function() {
if( window.localStorage ) {
if( !localStorage.getItem('firstLoad') ) {
localStorage['firstLoad'] = true;
window.location.reload();
} else
localStorage.removeItem('firstLoad');
}
})();
</script>
答案 1 :(得分:1)
您必须设置cookie(或使用javascript的localStorage),或使用xhr检索远程服务器上保存的值。
如果你想使用cookies,它就像
一样简单 document.cookie = "username=John Doe";
其中document.cookie是表单(x=y;a=b;n=z
)
如果您希望每次用户访问时都重新加载页面,请确保在设置页面重新加载后完成任何必要的处理后取消设置cookie。
答案 2 :(得分:1)
以下是发生的事情:
页面第一次加载,jQuery调用document.ready事件上的任何处理程序
页面重新加载
document.ready再次调用
重复
出于好奇,你为什么要那样做?为什么你有一个可以运行一次迭代的for循环?
另外,要回答你的问题,据我所知,确保页面不重新加载的唯一方法是使用持续约5秒的cookie。然后,在document.ready上检查该cookie,如果存在,则不要重新加载。
答案 3 :(得分:0)
$( window ).load(function() {
if (window.location.href.indexOf('reload')==-1) {
window.location.replace(window.location.href+'?reload');
}
});
答案 4 :(得分:0)
代码没问题。但是,如果该页面是从另一个页面打开的,并且带有指向 id 的链接 (.../page.html#aa),则代码仅适用于 firefox。使用其他浏览器重新加载页面而不去 id。 (对不起我的英语)。
答案 5 :(得分:0)
我用这段代码找到了解决方案。假设页面刷新时间不早于一小时。否则,将分钟添加到 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>
答案 6 :(得分:-1)
你的代码每次都是$(document).ready(),所以你的循环是无穷大并不奇怪 - 每个加载都是就绪状态。
如果您提供更详细的要求,我们可以解决它,而不使用窗口对象作为数据持有者。这是不好的方法,但你可以设置它进行测试。
Window对象存储的变量不依赖于重载,因为它比文档高。
让我们试试:
if( window.firstLoad == undefined ){
// yours code without any loop
// plus:
window.firstLoad = false;
}
您可以使用localStorage API。
同时检查此链接,它提供了有关窗口对象变量的更多信息: Storing a variable in the JavaScript 'window' object is a proper way to use that object?