請理解下面的問題更多的是學術問題,因爲我試圖理解我將要描述的問題背後的邏輯。即使沒有加載頁面,也能運行腳本
很多時候我看過網站(特別是關於即將上映的電影電影)有倒數計時器。這告訴頁面訪問者關於電影在劇院中的發行日期。
我的問題是他們如何編碼以便即使沒有人訪問過該頁面時也能運行?例如,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