2015-06-17 58 views
0

我们假设它是6月18日,一个人运行javascript,它在加载时运行一个函数,但即使在我的情况下关闭窗口或程序时,它也不会在当天晚些时候运行该函数。 然而,在6月19日如果人打开程序,它运行的JavaScript,然后它运行的功能,因为它是一个新的一天,并没有运行那天... 所以基本上,我怎么只做一个onload函数每天工作一次? 它必须是JavaScript,因为我正在使用的程序只能由JavaScript文件协助,而不是其他任何东西。 这个人必须将这些文件下载到他们的电脑上,那么我将如何去保存和检索localStorage?我如何在JavaScript中每天运行一次加载函数?

+0

您必须将标志存储在cookie或任何可用的持久存储器中 – vitr

+0

您需要存储您已经在当天运行的标识 - 可能是最后一个运行字段?根据您需要支持的浏览器,“localStorage”还是Cookie? –

+0

可能的重复[如何创建和从cookie读取值?](http://stackoverflow.com/questions/4825683/how-do-i-create-and-read-a-value-from-cookie) – rnevius

回答

1

您可以使用localStorage来实现此目的。示例代码:

/* returns null if local storage is not defined */ 
var localVal = localStorage.getItem('someUniqueName'); 

if(localVal == null){ 
    // execute the function 
}else{ 
    var tempd = new Date(); 
    var str = tempd.getDay() + tempd.getMonth() + tempd.getFullYear(); 
    if(localVal.localeCompare(str) == -1){ 
     //execute function 
     localStorage.setItem('someUniqueName',str); 
    } 
} 

如果你想创建一个cookie并处理它,那么你可以通过这个question

+1

永远不会'localVal = null'吗?自启动以来,执行功能并停止。下一次它将继续做同样的事情,并且永远不会运行'else'函数,这意味着'someuniqueName'永远不会运行。 – Badrush

+0

我还发现了一个错字。这里有两位小数点+ tempd..getFullYear();' – Badrush

0

您可以创建在用户的浏览器的Cookie仍然存在,直到一天结束。如果您在使用jQuery,你可以做如下(从here拍摄):

var currentDate = new Date(); 
expirationDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 0, 0, 0); 
$.cookie("ultOS", "5", {expires: expirationDate}); 

如果使用普通的JavaScript,那么办法做到这一点是因为(从here)如下:

function createCookie(name,value,date) { 
     if (date) { 
      var expires = "; expires="+date.toGMTString(); 
     } 
     else var expires = ""; 
     document.cookie = name+"="+value+expires+"; path=/"; 
    } 

var today = Date(); 
var midnight = today.getDate()+1 
midnight.setHours(0,0,0,0); 
createCookie("Valid","true",midnight); 

在每个页面加载开始时,只需检查此cookie的值。

相关问题