2015-06-17 95 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的值。

相關問題