[英]How to get a countdown timer to restart
I am creating an online examination system. 我正在创建一个在线考试系统。
I click the Apply button, then the countdown timer starts. 我单击“ 应用”按钮,然后倒数计时器启动。 Some time later, the browser page closes.
一段时间后,浏览器页面关闭。 After I click the same exam name, the countdown timer continues from where it left off, but I want the time to start over from the beginning.
单击相同的考试名称后,倒数计时器将从上次停止的地方继续,但是我希望时间从头开始。 Please see the screenshots below:
请查看以下屏幕截图:
View: 视图:
<h2><p style="float: right" id="countdown"></p></h2>
<a href="<?php echo base_url(); ?>student/Examinations/apply_examinations/<?php echo $value['examination_test_id']; ?>" class="btn btn-primary" id="apply" onclick="resetCountdownInLocalStorage();">Apply</a>
<script>
$(document).ready(function () {
$examination_test_id = $("#examination_test_id").val();
$time_limit = $("#time_limit").val();
var d = new Date($time_limit);
var hours = d.getHours();
var minute = d.getMinutes();
var minutes = hours * 60 + minute;
var seconds = 60 * minutes;
if (typeof (Storage) !== "undefined") {
if (sessionStorage.seconds) {
seconds = sessionStorage.seconds;
}
}
function secondPassed() {
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor((seconds - (hours * 3600)) / 60);
// var remainingSeconds = seconds - (hours * 3600) - (minutes * 60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
if (minutes < 10) {
minutes = "0" + minutes;
}
if (typeof (Storage) !== "undefined") {
sessionStorage.setItem("seconds", seconds);
}
document.getElementById('countdown').innerHTML = hours + ":" + minutes + ":" + remainingSeconds;
if (seconds == 0) {
clearInterval(myVar);
document.getElementById('countdown').innerHTML = alert('Timeout');
window.location.href = base_url + "student/Examinations/check_answer/" + $examination_test_id;
if (typeof (Storage) !== "undefined") {
sessionStorage.removeItem("seconds");
}
} else {
seconds--;
}
}
var myVar = setInterval(secondPassed, 1000);
});
function resetCountdownInLocalStorage() {
sessionStorage.removeItem("seconds");
}
</script>
It may depends on browser, according to this link 根据此链接 ,可能取决于浏览器
The lifetime of a browsing context can be unrelated to the lifetime of the actual user agent process itself, as the user agent may support resuming sessions after a restart.
浏览上下文的生存期可能与实际用户代理进程本身的生存期无关,因为用户代理可能支持重启后恢复会话。
You may have to clean session stroage on tab close I think. 我认为您可能必须关闭标签页上的会话存储。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.