我想用javascript注册按键,但要等到某个时间过去。最终,我想使视频停止播放,记录键值和时间戳,但是为了使代码更简单,我没有在此处包括此功能。
我尝试将功能checkKeyPress实现到功能setTimeout中,该功能不起作用,我也无法弄清楚为什么,因为这两个功能都是独立运行的。但是,在下面的代码中,该代码记录的是“未定义”,而不是所按下键的值。
// set the time offset to be 5000 ms
var timePress = 5000;
window.addEventListener("keydown", checkKeyPress, false); //call checkKeyPress upon key press
var keynum; // initialize the variable 'keynum'
function checkKeyPress(e) { //define the function checkKeyPress
if(window.event) { // in Internet Explorer, different browsers may need different event calls
keynum = e.keyCode;
} else if(this.which){ // in Netscape/Firefox/Opera
keynum = e.which;
}
// just for checking, log the value of keynum
console.log(keynum)
// if the keys 0 or 1 are pressed
if (keynum == '48' || keynum == '49'){
alert(String.fromCharCode(keynum));
}
}
setTimeout(checkKeyPress('keydown'), timePress);
答案 0 :(得分:0)
最后一行可能应该是
setTimeout(function() {
checkKeyPress('keydown');
}, timePress);
请注意,我不是在使用匿名函数调用checkKeyPress,
注意,ES6版本应该是
setTimeout( ()=> {
checkKeyPress('keydown');
}, timePress);