请理解下面的问题更多的是学术问题,因为我试图理解我将要描述的问题背后的逻辑。即使没有加载页面,也能运行脚本
很多时候我看过网站(特别是关于即将上映的电影电影)有倒数计时器。这告诉页面访问者关于电影在剧院中的发行日期。
我的问题是他们如何编码以便即使没有人访问过该页面时也能运行?例如,JavaScript代码仅在加载页面时起作用。这会使倒数计时器每次都重置。我真的很困惑人们如何访问这些网站,倒数计时器已经工作。
我只需要逻辑,而不是一些特定的编码。谢谢大家。
请理解下面的问题更多的是学术问题,因为我试图理解我将要描述的问题背后的逻辑。即使没有加载页面,也能运行脚本
很多时候我看过网站(特别是关于即将上映的电影电影)有倒数计时器。这告诉页面访问者关于电影在剧院中的发行日期。
我的问题是他们如何编码以便即使没有人访问过该页面时也能运行?例如,JavaScript代码仅在加载页面时起作用。这会使倒数计时器每次都重置。我真的很困惑人们如何访问这些网站,倒数计时器已经工作。
我只需要逻辑,而不是一些特定的编码。谢谢大家。
JS计数器仅在用户正在查看页面时运行。这里发生了什么:
var timeLeft = "<?php echo getTimeLeft($eventId); ?>";
setInterval()
所以基本上是的,JS计数器复位所有的时间,你重新输入页面。但开始时间总是不一样。
还有另一种选择,当你需要做定期的行动,无需人工交互(例如,在00:00每天晚上发送电子邮件为用户)。
然后我们使用Cron Job(搜索crontab linux
)。您提供必须执行的文件路径,服务器在时间到时调用该文件。
我真的很感激你的意见。谢谢。 – Mdermez
在这里我已经做了一个简单的倒数计时器,你可以看一看,没有什么特别的,你只需要知道结束日期并设置它。剩下的只是数学问题;]。
function countDown (endDate) {
var dateEnd = new Date(endDate); // set future date
var curDate = new Date(); // set current date
var diff = dateEnd.getTime() - curDate.getTime(); // get the difference
var leftSecs = diff/1000;
var oneMinSecs = 60;
var oneHourSecs = 60 * oneMinSecs;
var oneDaySecs = oneHourSecs * 24;
var estDays = Math.floor(leftSecs/oneDaySecs);
var estHours = Math.floor((leftSecs - (estDays*oneDaySecs))/oneHourSecs);
var estMins = Math.floor((leftSecs - ((estDays*oneDaySecs)+(estHours*oneHourSecs)))/60);
var estSecs = Math.floor(leftSecs - ((estDays*oneDaySecs)+(estHours*oneHourSecs)+(estMins*oneMinSecs)));
return [estDays, estHours, estMins, estSecs];
}
var timerEl = document.getElementById('timer');
setInterval(function() {
var est = countDown('07-15-2017');
timerEl.innerHTML = 'days: ' + est[0]
+ ' hours: ' + est[1]
+ ' mins: ' + est[2]
+ ' sec: ' + est[3] + ' left to 07-15-2017';
}, 1000);
<div id="timer"></div>
在JavaScript计时器的情况下:通过倒计时在目标时间上网页加载,并且该时间 - 没有必要要执行每一个倒计时(毫秒)在后台;你只需要目标时间。 –
计数器并未一直运行。当页面加载时,有一个变量存在事件应该发生的日期和时间。然后,JavaScript将查看当前时间,将其与事件时间进行比较,并计算差异。此代码每秒运行一次以更新计数器。 – crazyloonybin
https://stackoverflow.com/questions/9335140/how-to-countdown-to-a-date – Turnip