我的服务器每晚午夜运行一些数据库维护脚本。为了防止来自最终用户的干扰,所有会话在执行前几分钟终止。因此,在做重要事情的过程中,用户不会被粗暴地打断,倒数计时器会显示剩余时间。这是通过将预处理(php)期间的服务器时间导出到JS变量并在简单的循环显示例程中循环秒来完成的。
这在大多数情况下都是按预期工作的,但是,如果用户通过按后退按钮导航到该页面,则显示的时间将不同步。有没有办法可以确保每次查看页面时脚本都获得最新的服务器时间,即使在按下后退按钮后查看也是如此?
这很简单......
var seconds = <?php echo $time_left; ?>;
function display_timer ()
{
seconds--;
minutes = parseInt((seconds / 60) % 60);
hours = parseInt(seconds / 3600);
ds = seconds % 60;
ds = ds > 9 ? ds.toString() : '0' + ds.toString();
dm = minutes > 9 ? minutes.toString() : '0' + minutes.toString();
dh = hours > 9 ? hours.toString() : '0' + hours.toString();
document.getElementById('countdown').innerHTML = 'Time left: ' + dh + ':' + dm + ':' + ds;
if (seconds)
{
setTimeout("display_timer()", 1000);
}
}
display_timer();
答案 0 :(得分:0)
您可以使用Ajax调用在客户端与服务器刷新(同步)时间。您需要做的就是确定将Ajax调用发送到同步时间的最佳时间间隔。
答案 1 :(得分:0)
Ummar的建议会起作用。也许对于更基本的东西:如果在服务器端计算剩余时间,那么如何将剩余时间传递到客户端,然后从那里启动倒计时计时器。每次用户加载页面时,都会获得准确的时间,从中开始,然后不必不断地向服务器发送呼叫