按下后退按钮后刷新JS倒数计时器?

时间:2011-05-17 06:27:24

标签: php javascript

我的服务器每晚午夜运行一些数据库维护脚本。为了防止来自最终用户的干扰,所有会话在执行前几分钟终止。因此,在做重要事情的过程中,用户不会被粗暴地打断,倒数计时器会显示剩余时间。这是通过将预处理(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();

2 个答案:

答案 0 :(得分:0)

您可以使用Ajax调用在客户端与服务器刷新(同步)时间。您需要做的就是确定将Ajax调用发送到同步时间的最佳时间间隔。

答案 1 :(得分:0)

Ummar的建议会起作用。也许对于更基本的东西:如果在服务器端计算剩余时间,那么如何将剩余时间传递到客户端,然后从那里启动倒计时计时器。每次用户加载页面时,都会获得准确的时间,从中开始,然后不必不断地向服务器发送呼叫