2013-02-23 56 views
0

我正在寫一個Greasemonkey腳本,我想知道它何時上次運行。爲此,我想用GM_setValue存儲當前時間,並將該時間與腳本再次運行的時間進行比較。Greasemonkey腳本無法將日期/時間傳遞給GM​​_setValue

但是,看起來Date().getTime()結果不會傳遞到GM_setValue。例如,如果您運行:

var newtime = new Date().getTime(); 
GM_setValue('lastrun', newtime); 
alert(GM_getValue('lastrun')); 

由於警報框不會彈出,因此存在明顯的錯誤。但是,如果您將第一行替換爲:

var newtime = 1; 

然後,您會在預警框中返回1,就像您期望的那樣。

這幾乎只是隔離導致問題的日期格式。有關如何處理此問題的任何想法,或更好的方法來保存腳本運行之間的日期?

回答

0

我有類似的問題。該數字太大,無法存儲爲Firefox的cookie值。我的解決辦法(由1000分,降餘數)來限制精確到秒和減去43年(1356998400秒)把從測量到午夜1月1日2013,所以我的代碼如下所示:

var time = Math.floor((new Date().getTime()/1000) - 1356998400); 
GM_setValue("runTime", time); 

和檢索看起來像:

var time = GM_getValue("runTime", 0); 
     if (time != 0) { 
     var cur = Math.floor((new Date().getTime()/1000) - 1356998400); 
     var cur = cur - time; 
     var sec = cur % 60; 
     var min = Math.floor(cur/60); 
     console.log("Script took " + min + ":" + sec); 
     } 
+0

你也可以轉換回Date對象: VAR LASTRUN =新的日期((GM_getValue( 「運行」)+ 1356998400)* 1000); – BGundlach 2013-03-17 07:01:27

相關問題