1

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

window.onkeydown = onKeyDown;

它基本上可以工作,但它只捕获 Firefox 中的 1 个键。然后我必须释放它并再次按下。

谷歌浏览器为我提供了一个持续的抓取,所以我想知道这是否是我的选择。

4

3 回答 3

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;
于 2010-07-15T19:12:57.420 回答
1

你试过这个keypress活动吗?如果按键被按住,keypress事件会在之后触发。keydown

于 2010-07-15T19:12:15.923 回答
1

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

有关更多信息,请参阅Jan Wolter 关于 JavaScript 关键事件的优秀文章

于 2010-07-15T19:53:41.127 回答