我需要创建一种特殊的脚本 我想在一天中的某些时间显示消息。我已经在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!");
}
我觉得脚本每秒都没有运行。为了使其有效工作,脚本必须能够检查小时分钟和第二个“每秒”。我并不担心性能,我只需要准确的时间(到第二个)。
我该怎么做?
答案 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