Javascript中的一次可调用函数
我正在用Javascript开发一个测验组件,其中有一个startTimer()函数,它根据传递给它的值开始倒计时。 该函数在页面加载和测验开始时调用 我不想让用户再次调用该函数并改变测试时间Javascript中的一次可调用函数,javascript,time,timer,Javascript,Time,Timer,我正在用Javascript开发一个测验组件,其中有一个startTimer()函数,它根据传递给它的值开始倒计时。 该函数在页面加载和测验开始时调用 我不想让用户再次调用该函数并改变测试时间 是否可以检测到该函数被再次调用?任何用户都可以在浏览器中禁用JavaScript 我建议您记录从页面被送达到服务器返回答案之间的时间,并将其作为最终的来源,以确定它们花费了多长时间。也许允许一点缓冲区来补偿网络延迟和页面呈现时间 JavaScript计时器可以是一个很好的UI功能,可以帮助用户知道他们还有
是否可以检测到该函数被再次调用?任何用户都可以在浏览器中禁用JavaScript 我建议您记录从页面被送达到服务器返回答案之间的时间,并将其作为最终的来源,以确定它们花费了多长时间。也许允许一点缓冲区来补偿网络延迟和页面呈现时间
JavaScript计时器可以是一个很好的UI功能,可以帮助用户知道他们还有多少时间,但是不要相信用户界面,因为聪明的用户会编写自己的UI(或者在这种情况下,将UI配置为不使用JavaScript)。如果要阻止人们更改测验的任何方面,您必须在服务器上实现这些限制
如果不是不可能的话,也很难防止在客户端干扰测验数据。谢谢大家,我在网上发现了:
function createChance(){
var chanceLeft = true;
return function(){
if(chanceLeft){
console.log("This was the only chance you had.");
chanceLeft = false;
}
else{
console.log('Sorry: you already used your chance');
}
};
}
var chance = createChance();
chance();
// This was the only chance you had.
chance();
// Sorry: you already used your chance
这方面的任何破解方法???是的,但用户也可以更改。它需要在服务器端编程。这与我在回答中的想法相同(使用闭包关闭chanceLeft)。用户只需执行:chance=function(){console.log(“这是您仅有的一次机会”);}并完全重写您的chance函数,因为他们可以访问您的代码,他们知道如何执行此操作