次のように、関数を起動する通常の onkeydown イベント ハンドラーがあります。
window.onkeydown = onKeyDown;
基本的には機能しますが、Firefox では 1 つのキーしか取得できません。次に、それを離してもう一度押す必要があります。
Google chrome は連続グラブを提供してくれるので、これは選択によるものなのだろうか。
次のように、関数を起動する通常の onkeydown イベント ハンドラーがあります。
window.onkeydown = onKeyDown;
基本的には機能しますが、Firefox では 1 つのキーしか取得できません。次に、それを離してもう一度押す必要があります。
Google chrome は連続グラブを提供してくれるので、これは選択によるものなのだろうか。
次のようなことを試してみるとどうなりますか。
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;
keydown
Windows では、Firefox は自動繰り返しイベントをサポートしているため、Mac または Linux を使用しているに違いないと思います。ただし、他のオペレーティング システムでは、keypress
キーを押したままにしておくと、自動反復イベントのみが取得されます。keypress
要約すると、可能であれば、イベントを使用してください。
詳細については、Jan Wolter の JavaScript キー イベントに関する優れた記事を参照してください。
keypress
イベントはもう試しましたか?キーが押された後keypress
にイベントが発生します。keydown