Javascript:刷新时如何防止时间限制重置?

时间:2016-03-18 01:58:59

标签: javascript jquery

当页面重新加载/刷新时间限制重置时,我遇到时间限制问题。

P.S:我将此时间限制用于我的在线测验计划,并且我使用标题位置转到下一个问题。

HTML

<label id="time">1:00</label>

JAVASCRIPT

function startTimer(duration, display) {
var timer = duration, minutes, seconds;
setInterval(function () {
    minutes = parseInt(timer / 60, 10)
    seconds = parseInt(timer % 60, 10);

    minutes = minutes < 10 ? "0" + minutes : minutes;
    seconds = seconds < 10 ? "0" + seconds : seconds;

        localStorage.setItem('time_remaining_min', minutes);
        localStorage.setItem('time_remaining_sec', seconds);

        var minutes_left = localStorage.getItem('time_remaining_min');
        var seconds_left = localStorage.getItem('time_remaining_sec');

        display.text(minutes_left + ":" + seconds_left);

    if (--timer < 0) {
        //finished
    }
   }, 1000);
 }

 jQuery(function ($) {
  var fiveMinutes = 60 * 5,
    display = $('#time');
 startTimer(fiveMinutes, display);
});

编辑: 我尝试使用本地存储但没有工作

        localStorage.setItem('time_remaining_min', minutes);
        localStorage.setItem('time_remaining_sec', seconds);

        var minutes_left = localStorage.getItem('time_remaining_min');
        var seconds_left = localStorage.getItem('time_remaining_sec');

        display.text(minutes_left + ":" + seconds_left);

3 个答案:

答案 0 :(得分:2)

将计时器值存储在cookie或本地存储中。

答案 1 :(得分:0)

不确定您是否能够通过页面刷新来解决这个问题。也许更好的答案是不要重新加载页面,并使用AJAX做任何你需要做的事情。

答案 2 :(得分:0)

您可以将时间存储在Cookie中。

//Set cookie
time_remaining = 200;
$.cookie('time_remaining', time_remaining);

//Retrieve cookie
time_remaining = $.cookie('time_remaining');

您应该能够轻松地在您的代码中实现上述内容(提示:每当计时器减少时,节省cookie中剩余的时间)。

请注意,这并不安全,用户可以在浏览器中轻松清除和修改Cookie。如果您正在寻找更安全的东西,您需要实现一些后端功能。