创建计划的Greasemonkey脚本

时间:2014-05-12 08:39:03

标签: javascript greasemonkey userscripts

我需要创建一种特殊的脚本 我想在一天中的某些时间显示消息。我已经在Firebug Console中测试了代码并且它可以工作。代码是:

//Getting the hour minute and seconds of current time
var nowHours = new Date().getHours() + '';
var nowMinutes = new Date().getMinutes() + '';
var nowSeconds = new Date().getSeconds() + '';

var this_event = nowHours + nowMinutes + nowSeconds;
//172735 = 4PM 25 Minutes 30 Seconds. Just checked if now is the time
    if (this_event == "162530") {
        window.alert("Its Time!");
    }

我觉得脚本每秒都没有运行。为了使其有效工作,脚本必须能够检查小时分钟和第二个“每秒”。我并不担心性能,我只需要准确的时间(到第二个)。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

当然,脚本每秒都没有运行,GM脚本在文档加载后运行一次。

计算当前时间与目标时间之间的差异,并根据差异使用超时:

var now=new Date(),
    then=new Date(),
    diff;
    then.setHours(16);
    then.setMinutes(15);
    then.setSeconds(30);
    diff=then.getTime()-now.getTime();

    //when time already has been reached
    if(diff<=0){
      window.alert('you\'re late');
    }
    //start a timer
    else{
     window.setTimeout(function(){window.alert('it\'s time');},diff);
    }

答案 1 :(得分:0)

Javascript不保证您的超时和其他此类事件准确无误地发送 您应该使用Date比较两个>=对象,并删除超时或您用于跟踪匹配if内部时间的其他方法(然后在必要时重置它)。

有关详细信息,请参阅:https://stackoverflow.com/a/19252674/1470607
或者,您可以使用字符串比较(但有警告):https://stackoverflow.com/a/6212411/1470607