Javascript Firefox中的连续onkeydown事件

Javascript Firefox中的连续onkeydown事件,javascript,firefox,events,onkeydown,Javascript,Firefox,Events,Onkeydown,我有一个触发函数的常规onkeydown事件处理程序,如下所示: window.onkeydown = onKeyDown; var iskeydown = 0; var samplecount = 0; function onKeyDown() { iskeydown = 1; while (iskeydown) continuous(); } function onKeyUp() { iskeydown = 0; alert(samplecount);

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

window.onkeydown = onKeyDown;
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;
它基本上可以工作,但在Firefox中只捕获1个键。然后我必须释放它并再次按下


Google chrome为我提供了一个连续抓取功能,所以我想知道这是否是出于选择。

您是否尝试过
按键事件?如果按住键,则在按下键后会触发
keypress
事件。

您是否尝试过
keypress
事件?如果按住键,则会在按下键后触发
keypress
事件。

window.onkeydown = onKeyDown;
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;

如果您尝试这样的方法会怎么样:

window.onkeydown = onKeyDown;
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;

我猜您一定是在使用Mac或Linux,因为在Windows中,Firefox确实支持自动重复的
keydown
事件。但是,在其他操作系统中,只有在按住键时,才会自动重复出现
keypress
事件。总之,如果可以,请使用
按键
事件


有关更多信息,请参阅。

我猜您一定在使用Mac或Linux,因为在Windows中,Firefox确实支持自动重复的
按键事件。但是,在其他操作系统中,只有在按住键时,才会自动重复出现
keypress
事件。总之,如果可以,请使用
按键
事件


有关更多信息,请参阅。

您的问题到底是什么?您的问题到底是什么?这似乎不是一个好主意:它会给JavaScript运行时带来不必要的压力,可能会产生“此脚本需要很长时间”的问题警告,可能会阻止浏览器处理新的关键事件。这似乎不是一个好主意:它会给JavaScript运行时带来不必要的压力,可能会产生“此脚本需要很长时间”警告,并可能会阻止浏览器处理新的关键事件。