避免使用 Javascript/JQuery 重新加载页面和按下重新加载
Avoid page reload and when press reload using Javascript/JQuery
我正在创建一个考试应用程序,我希望用户在参加考试时防止页面重新加载,因为它也会刷新考试计时器。有没有什么方法可以直接避免 Javascript 中的页面重新加载,或者有人可以建议另一种理想的方法,比如显示弹出窗口和避免页面重新加载之类的吗?
你不能真正阻止用户重新加载,因为这是浏览器的默认行为,你可以做的是将计时器值存储在某个地方(后端服务器或本地存储),然后从那里获取值在每个会话期间
// 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
}
注意:这只是一个临时解决方案,更好的办法是设置一个快速服务器作为您的支持,并使用它为每个会话提供计时器值
我正在创建一个考试应用程序,我希望用户在参加考试时防止页面重新加载,因为它也会刷新考试计时器。有没有什么方法可以直接避免 Javascript 中的页面重新加载,或者有人可以建议另一种理想的方法,比如显示弹出窗口和避免页面重新加载之类的吗?
你不能真正阻止用户重新加载,因为这是浏览器的默认行为,你可以做的是将计时器值存储在某个地方(后端服务器或本地存储),然后从那里获取值在每个会话期间
// 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
}
注意:这只是一个临时解决方案,更好的办法是设置一个快速服务器作为您的支持,并使用它为每个会话提供计时器值