如何在javascript中停用一个函数

时间:2017-10-02 22:17:44

标签: javascript function global-variables

我有一个javascript函数,我希望能够在不再需要时关闭它。它被称为“锁定”并阻止学生在参加测验时导航到其他网站。如果他们确实试图去其他地方,他们会被发送到一个不同的网址,说明他们违反了“锁定”规则。

当激活“锁定”功能时,名为“锁定”的变量设置为“1”,这将使该功能生效。

现在我有时想要停止“锁定”功能,所以我创建了另一个名为“stoplockdown”的函数,它将“锁定”变量更改为不同的数字。看起来这应该会停止执行函数,因为有一个“if”子句依赖于“locked”为“1”。因此,如果“锁定”不是“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有点新,并且我不是一般的专业程序员。似乎“锁定”应该具有全局范围,但是当您更改其值时,它似乎没有改变以停止“锁定”函数的“if”子句。任何建议,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

已锁定并未实际执行任何操作,因为您将其设置为1,然后检查它是否等于1。

然后创建一个事件侦听器 - 当您更改locked的值时,此事件侦听器仍然存在。您需要删除它或检查事件监听器本身中的锁定值。