トリガーの繰り返しを防ぐための js キーボード イベント keydown イベント
キーボード イベントには、主に 3 つのタイプがあります: keydown
、 、およびkeypress
(推奨されません。一部のブラウザはこれを放棄しています)keyup
。
通常のキーボードのキーダウンイベントを追加
// 监听键盘按下事件
document.addEventListener('keydown', function(event) {
// 输出按下的键的键码
console.log('Key pressed:', event.key, 'Key code:', event.keyCode);
});
ただし、キーを放さないとこのイベントが繰り返し発生します。
キーダウンイベントが繰り返しトリガーされるのを防ぐ
①フラグ変数を使用してボタンの状態を追跡する
let keyDownFlag = false;
// 监听键盘按下事件
document.addEventListener('keydown', function(event) {
if (!keyDownFlag) {
keyDownFlag = true;
console.log('Key pressed:', event.key, 'Key code:', event.keyCode);
}
});
// 监听键盘释放事件
document.addEventListener('keyup', function() {
keyDownFlag = false;
});
②イベントの属性で判定
repeat
キーを押し続けることでキーボードイベントが連続して発生するかどうかを属性で判定できます。
// 监听键盘按下事件
document.addEventListener('keydown', function(event) {
if (!event.repeat) {
console.log('Key pressed:', event.key, 'Key code:', event.keyCode);
}
この例では、event.repeat プロパティを使用して、キーが押されたことによってイベントがトリガーされたかどうかを確認します。events.repeat が false の場合、これは継続的にトリガーされるイベントではなく、新しいキー イベントであることを意味します。
コンポーネントキーの使い方
コンポーネント キーは通常、keydown イベントを通じてトリガーされます。
document.onkeydown = function (oEvent) {
console.log(oEvent);
}
イベント オブジェクトには多くの情報が返されていることがわかります。keycode 属性には、キーボード上の対応する ASCII コード、type
トリガーされるイベントのタイプなどのコードが含まれています。
ここでは、使用できる属性がいくつかあります。つまり、altkey
属性、ctrlkey
属性、および ですshiftkey
。キーボードのalt、ctrl、shiftキーによるイベントトリガーの判定を表します。これらのキーによってイベントがトリガーされると、その値が true になり、
これらのプロパティと組み合わせた上記のコンテンツを通じてキーボード イベントをリッスンすることができます。
- たとえば、ctrl + sの組み合わせイベントをリッスンしたいとします。
document.onkeydown = functionb(oEvent) {
var oEvent = oEvent || window.oEvent;
//获取键盘的keyCode值
var nKeyCode = oEvent.keyCode || oEvent.which || oEvent.charCode;
//获取ctrl 键对应的事件属性
var bCtrlKeyCode = oEvent.ctrlKey || oEvent.metaKey;
if( oEvent.nKeyCode == 83 && bCtrlKeyCode ) {
alert('save');
//doSomeThing...
}
}
- たとえば、Alt+q の組み合わせイベントをリッスンしたいとします。
document.onkeydown = functionb(e) {
if(e.altKey && e.keyCode == 81){
if(e.repeat){
return
}
//todo somethink
}
}
Mac コンピュータの操作は通常の Windows コンピュータとは異なりますが、Alt キーがないわけではありません。Mac コンピュータで Alt キーを見つけるのは難しくありません。キーボードの左下隅にあるオプション キーは、実際には Apple の Alt キーです。その隣のコントロール キーは、PC コンピュータの Ctrl キーに対応します。コマンド キーwinキーに対応します。