我有一个javascript函数,当不再需要它时,我希望能够将其关闭。它被称为“锁定”,防止学生在参加测验时浏览到其他网站。如果他们真的试图去其他地方,他们会被发送到一个不同的URL,该URL会说他们违反了“锁定”规则。
当功能"lockdown“被激活时,名为"locked”的变量被设置为"1“,这导致该功能被激活。
现在,我有时想停止"lockdown“函数,所以我创建了另一个名为"stoplockdown”的函数,它将"locked“变量更改为一个不同的数字。这似乎应该会停止函数的执行,因为有一个"if“子句,它依赖于"locked”是"1“。因此,如果"locked“不是"1",则其他事件将不会发生。
我可以成功地从另一个程序调用" lockdown“和"stoplockdown”,但"stoplockdown“不会关闭锁定功能。下面是javascript:
<!--lockdown and stop lockdown--->
<script>
<!--declare variable outside of function to give it a global scope--->
var locked=2;
function lockdown(){
locked=1;
alert(locked);
if(locked==1){
// next event prevents resizing or starting with small window to allow for split screen cheating in lockdown mode.
if (window.outerHeight<screen.availHeight || window.outerWidth<screen.availWidth) {
window.location.href =
'https://quizninja.net/lockdown.html';
}
window.addEventListener("resize", resized);
function resized(){
window.location.href =
'https://quizninja.net/lockdown.html';
}
// previous event prevents resizing or starting with small window window to allow for split screen cheating in lockdown mode.
// next event redirects to another page if quiz loses focus
window.onblur = function (){
window.location.href =
'https://quizninja.net/lockdown.html';
}
}
}
// to make it complete, also add onblur to document.
// For browsers using tabs (like firefox)
document.onblur = window.onblur;
document.focus = window.focus;
//stop lockdown
function stoplockdown(){
locked=0;
alert(locked);
}
</script>
<!-- javascript function to close window if not in focus for lockdown browser mode ENDS...-->
e为什么这个不起作用?我对javascript还是个新手,一般来说,我不是一个专业的程序员。看起来"locked“应该有一个全局作用域,但是当你改变"lockdown”函数的"if“子句的值时,它似乎不会改变。如有任何建议,我们将不胜感激。谢谢。
发布于 2017-10-03 06:22:59
locked实际上并没有做任何事情,因为您将其设置为1,然后立即检查它是否等于1。
然后创建一个事件侦听器-当您更改locked的值时,该事件侦听器仍然存在。您需要将其删除或检查事件侦听器本身中的locked值。
https://stackoverflow.com/questions/46534527
复制相似问题