我有一个常规onkeydown事件处理程序,它会触发一个函数,如下所示:
window.onkeydown = onKeyDown;
它本质上有效,但它只捕获Firefox中的1个键。然后我必须释放它并再次按下。
Google Chrome为我提供了持续的抓取,所以我想知道这是否可以选择。
答案 0 :(得分:2)
如果你尝试这样的话怎么办?
var iskeydown = 0;
var samplecount = 0;
function onKeyDown() {
iskeydown = 1;
while (iskeydown) continuous();
}
function onKeyUp() {
iskeydown = 0;
alert(samplecount);
}
function continuous() {
samplecount = samplecount + 1;
}
window.onkeydown = onKeyDown;
window.onkeyup = onKeyUp;
做得更好:
var iskeydown = 0;
var samplecount = 0;
function onKeyDown() {
iskeydown = 1;
continuous();
}
function onKeyUp() {
iskeydown = 0;
alert(samplecount);
}
function continuous() {
if (iskeydown == 1) {
samplecount = samplecount + 1;
setTimeout("continuous()",200);
}
}
window.onkeydown = onKeyDown;
window.onkeyup = onKeyUp;
答案 1 :(得分:1)
您是否尝试过keypress
活动?如果按住键,则会在keypress
之后触发keydown
事件。
答案 2 :(得分:1)
我想您必须使用Mac或Linux,因为在Windows中,Firefox确实支持自动重复的keydown
事件。但是,在其他操作系统中,只有按住键才能获得自动重复的keypress
事件。总之,如果可以,请使用keypress
事件。
有关详细信息,请参阅Jan Wolter's excellent article on JavaScript key events。