Я работаю над модулем онлайн-викторины, который автоматически отправляется через 30 минут. Теперь я хочу показать окно с предупреждением, в котором студент получает уведомление «1 минута до завершения теста» на 29-й минуте. Я не могу понять, как это реализовать. У меня есть мой код, как показано ниже для этого.
$(document).ready(function(){
function get15dayFromNow() {
return new Date(new Date().valueOf() + <?php echo $duration ; ?> * 60 * 1000);
}
var $time_spend = $('#time_spend');
$time_spend.countdown(get15dayFromNow(), function(event) {
$(this).val(event.strftime('%M:%S'));
});
var $clock = $('#clock');
$clock.countdown(get15dayFromNow(), function(event) {
$(this).html('Time Left : '+'00:'+event.strftime('%M:%S'));
})
.on('finish.countdown', function() {
submitForm();
});
function submitForm()
{
document.getElementById("target").submit();
}
});
Если вы используете скрипт обратного отсчета, как это:
https://www.w3schools.com/howto/howto_js_countdown.asp
Просто измените выражение if:
if (distance < WHATEVERYOUWANT) {
alert("Message");
}
Вот пример того, как вы можете достичь этого:
function countdown (timer) {
console.log(timer)
if(timer ===5){
alert('halfWay');
} else if (timer === 0){
return;
}
setTimeout(() => countdown(timer - 1), 1000);
}
countdown(10);
Просто настройте числа в вашей реализации, чтобы получить желаемый результат.
Я бы начал сеанс в php с отметкой времени, когда пользователь начинает тестирование, и регулярно проверял это значение через AJAX. если оставшееся время <= 60 секунд, показать окно предупреждения и прекратить запрос.
Может быть, это может сработать:
var $time_spend = $('#time_spend');
$time_spend.countdown(get15dayFromNow(), function(event) {
$(this).val(event.strftime('%M:%S'));
if (event = WHATEVER){
alert('Message');
}
});