Estoy creando una aplicación de examen y quiero que los usuarios eviten que se vuelva a cargar la página mientras asisten al examen porque también actualiza el temporizador del examen. ¿Hay alguna forma de evitar directamente la recarga de la página en Javascript o alguien puede sugerir otra forma ideal de hacerlo, como mostrar una ventana emergente y evitar la recarga de la página o algo así?
Realmente no puede evitar que el usuario vuelva a cargar, ya que es un comportamiento predeterminado del navegador, lo que puede hacer es almacenar el valor del temporizador en algún lugar (un servidor back-end o almacenamiento local) y luego obtener el valor desde allí durante cada sesión
// you cannot run this snippet here because of stack security reasons let timerValue = localStorage.getItem('timer') || 10; // if timer value is not found then it should be 10 seconds by default const wait = (ms) => new Promise(r => setTimeout(r, ms)); run(); async function run() { console.log('timer has begun'); while(true) { if (timerValue <= 0) break; timerValue--; localStorage.setItem('timer', timerValue); await wait(1000); } console.log('timer has ended'); localStorage.setItem('timer', null); // reset timer once the test is finished }
Nota : esta es solo una solución temporal, una mejor sería configurar un servidor express como respaldo y usarlo para servir los valores del temporizador en cada sesión