Greasemonkey脚本无法将日期/时间传递给GM_setValue

Greasemonkey script fails passing date/time to GM_setValue

本文关键字:GM setValue 时间 脚本 日期 Greasemonkey      更新时间:2023-09-26

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

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

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

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

var newtime = 1;

然后,您会在警报框中得到1,正如您所期望的那样。

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

我也遇到了类似的问题。该数字太大,无法存储为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);
        }