我正在編寫一個程序,作爲認證的一種替代形式使用擊鍵節奏(非生物識別)。它記錄用戶按下按鍵時的按鍵時間,以及何時釋放按鍵的時間。但是,在保存密鑰的同時(由於Javascript中onkeydown函數的性質),記錄時間的函數在按住鍵時會一遍又一遍地被調用。有沒有辦法避免這種滋擾? 重要的代碼下面,整個項目(IDK如果它會幫助):https://bitbucket.org/niklam/krauths-v.-1.0避免鍵盤重複的方法?
<!DOCTYPE html>
<html>
<body>
<h1> KRAUTHS Account Creator</h1>
<link type="text/css" rel="stylesheet" href="style.css"/>
<input id="a" onkeydown="start()" onkeyup="start()"> <br>
<br>
<br>
<button onclick="submit()"> Submit</button>
<script>
var x = 0;
var timer = 0;
var list = ""
function run(){
timer = timer + 1;
setTimeout(run, 1);
}
function start(){
x = x + 1;
if(x==1){
run();
}
else{
list = list + timer +",";
timer = 0;
}
}
function submit(){
// ignore my http request, not important
list = list.substring(0,list.length-1);
alert(list);
var request = new XMLHttpRequest();
request.open("GET","../add?u="+prompt("Enter your username")+"&n="+list+"&l=m",false);
request.onreadystatechange = function(){
if(request.status == 200 && request.readyState == 4){
alert(request.responseText);
}
}
request.send();
}
</script>
</body>
</html>
除了調用自身的函數外,您可以在keydown上爲'time'設置一個變量,然後在keyup上從變量中減去當前時間值以獲得按鍵時間? – Jack 2014-09-23 23:07:24