Firefox中的连续onkeydown事件

时间:2010-07-15 19:08:08

标签: javascript firefox events onkeydown

我有一个常规onkeydown事件处理程序,它会触发一个函数,如下所示:

window.onkeydown = onKeyDown;

它本质上有效,但它只捕获Firefox中的1个键。然后我必须释放它并再次按下。

Google Chrome为我提供了持续的抓取,所以我想知道这是否可以选择。

3 个答案:

答案 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