質問: alt + spaceメニューでの操作をonkeydownイベントに流したくない javascriptを用いて、onkeydownイベントでキーxならfn_X、キーzならfn_Zといったように、各キーに処理を割り当てています。 (ctrlやaltと組み合わせていません。) ウィンドウを最大化させようとalt + space、xと操作すると、onkeydownも反応してfn_Xが処理されてしまうので、これを避けたいです。 alt+spceメニューでの操作をonkeydownイベントに影響させない手段、onkeydown内でalt+spaceの操作だと見分けるフラグ的な何かはないものでしょうか? お知恵をお貸しください。 よろしくお願いいたします。
回答: altキーが押されているかのフラグはありますが、スペースキーのフラグはありません。 ただ、質問文を読む限りではaltキーを検知できれば十分だと思います。 キーボードイベント発火時にaltキーが押されていた場合は、event.altKeyプロパティがtrueになります。 function callback(e) { if (!e.altKey) { // 処理 } } document.onkeydown = callback; もしくは、 function callback(e) { if (e.altKey) { return; } // 処理 } document.onkeydown = callback; みたいにすると良いと思います。 上とは別のやり方ですが、 onkeydownイベントそのものを止めたいのでしたら、 document.addEventListener("keydown", e => {if (e.altKey) {e.stopImmediatePropagation()}}, true); という一文を追加しておくと、大抵のkeydownイベントの処理の発火を抑制できます。 質問等ありましたら返信にどうぞ。