Javascript记录击键时间

时间:2012-04-20 15:32:19

标签: javascript jquery record timing keystroke

我想以毫秒为单位记录每次击键之间的时间(只需一键开始,'A'键)。 在用户完成他的事情之后,他可以提交并检查每个击键之间的时间。像:

1:500 2:300 3:400 4:500 5:100 6:50 7:50 8:25

我相信这可以使用Javascript,是吗?

1 个答案:

答案 0 :(得分:2)

不确定

var times = [];

// add an object with keycode and timestamp
$(document).keyup(function(evt) {
    times.push({"timestamp":evt.timeStamp,
                "keycode":evt.which})
});

// call this to get the string
function reportTimes() {
    var reportString = "";
    for(var i = 0; i < times.length - 1; ++i) {
         reportString += (i+1) + ": " + (times[i+1].timestamp - times[i].timestamp) + " ";
    }
    return reportString; // add this somewhere or alert it
}

我添加了密码以防万一你以后想要它;你的确切问题陈述没有必要。


通过评论讨论澄清:

for循环最多只能到times.length - 2(因为i总是严格小于times.length - 1),因此times[i+1]没有问题超出阵列的范围。例如,如果您执行五次按键操作,因此具有包含五个元素的times数组(从04编制索引):

1st pass: times[1].timestamp - times[0].timestamp
2nd pass: times[2].timestamp - times[1].timestamp
3rd pass: times[3].timestamp - times[2].timestamp
4th pass: times[4].timestamp - times[3].timestamp

然后循环终止,因为将i设置为4会触发终止条件:

= i < times.length - 1
= 4 < 5 - 1
= 4 < 4
= false  [i cannot be set to 4 by this loop]

因此,times[i+1]始终是有效索引的元素,因为i最多只比最大索引小一个。