我目前正在设计一个系统,其中包含一个主页,该主页显示仅登录他们必须完成的工作的人。我被要求设置这个主页,每隔3分钟刷新一次我使用此代码完成的任务:
function startTimer() {
var now = new Date();
var minutes = now.getMinutes();
var seconds = now.getSeconds();
var secTime = minutes*60*seconds;
if(secTime % (3*60) == 0){
var refreshTime = 3*60*1000;
} else {
var refreshTime = (secTime % (3*60)) * 1000;
}
setTimeout('refresh()', refreshTime);}
function refresh() {
window.location.href = 'myURL';
}
startTimer();
我目前遇到的问题是,当我离开此页面但仍在系统中时,它会一直让我回到主页并且我失去了我正在处理的内容。 有没有办法让我可以为那些没有离开它的人保持刷新主页并在有人的时候停止它?
我对Javascript很新,所以如果我问了很多问题,请耐心等待。 提前感谢您提供任何帮助。
答案 0 :(得分:1)
我假设您在网站的所有页面上使用共享的javascript文件,这就是计时器将在每个页面上继续运行的原因。您可以通过检查页面URL确保计时器仅在主页上运行,并将startTimer
函数包装在此检查中:
if (document.location.href == "http://www.yourhomepage.com"){
startTimer();
}
将http://www.yourhomepage.com替换为您的主页所在的网址。这仅在您的页面是单独的html文件时才有效。如果您使用hashbang方法,文档不会更改,这将无效。
答案 1 :(得分:0)
您可以使用Ajax刷新页面的工作日志部分,而不是刷新整个页面。
答案 2 :(得分:0)
当您刷新页面时,由于window.location.href = 'myURL';
,您的代码会将您重定向到主页。位置发生变化,并且每次都会将您重定向到“myURL'”。
您只想刷新页面的一部分。您必须发送XMLHttpRequest或Ajax请求(您将页面加载到当前页面而不重新加载当前页面)。 https://developer.mozilla.org/fr/docs/XMLHttpRequest
当您加载页面时,您将插入加载到页面中的文本。
然后,调用发送请求的函数,每个" refreshTime"像那样
function sendAjax(){
// ... ajax request
// refreshTime = 3 * 60 * 1000;
setTimeout( sendAjax, refreshTime );
}
sendAjax();
请勿在setTimout中使用函数名称。 setTimemout需要一个函数来调用(不是他的名字,而是他的值)和时间参数。