Greasemonkey脚本无法将日期/时间传递给GM​​_setValue

时间:2013-02-23 18:18:44

标签: javascript greasemonkey

我正在写一个Greasemonkey脚本,我想知道它上次运行的时间。为此,我想用GM_setValue存储当前时间,并将该时间与脚本再次运行的时间进行比较。

但是,似乎Date().getTime()结果不会传递给GM_setValue。例如,如果您运行:

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

由于警报框不会弹出,因此显然有错误。但是,如果您将第一行替换为:

var newtime = 1;

然后你会像预期的那样在警告框中返回1。

这几乎只是隔离了导致此问题的日期格式。关于如何处理这个的任何想法,或更好的方法来保存脚本运行的时间?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。该数字太大,无法存储为firefox cookie值。我的解决方案是将精度限制为秒(除以1000,下降余数)并减去43年(1356998400秒)以将测量日期从2013年1月1日午夜测量,因此我的代码如下所示:

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);
        }