1

次のように、関数を起動する通常の onkeydown イベント ハンドラーがあります。

window.onkeydown = onKeyDown;

基本的には機能しますが、Firefox では 1 つのキーしか取得できません。次に、それを離してもう一度押す必要があります。

Google chrome は連続グラブを提供してくれるので、これは選択によるものなのだろうか。

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

keydownWindows では、Firefox は自動繰り返しイベントをサポートしているため、Mac または Linux を使用しているに違いないと思います。ただし、他のオペレーティング システムでは、keypressキーを押したままにしておくと、自動反復イベントのみが取得されます。keypress要約すると、可能であれば、イベントを使用してください。

詳細については、Jan Wolter の JavaScript キー イベントに関する優れた記事を参照してください。

于 2010-07-15T19:53:41.127 に答える
1

keypressイベントはもう試しましたか?キーが押された後keypressにイベントが発生します。keydown

于 2010-07-15T19:12:15.923 に答える