- 締切済み
「Alt + ←」の機能(前のページに戻る)を抑止したい
◇環境 ブラウザ:Microsoft Internet Explorer 6.0 SP2 上記の環境で、「Alt + ←」の機能(前のページに戻る)をJavaScriptで抑止したいと考えています。サンプルとして、 window.document.onkeydown = altandArrowDisable(){ if(event.altKey && event.keyCode == 37) { event.keyCode = 0; return false; }else{ return true; } } と書いてみましたが機能(前のページに戻る)を抑止できません。 alert()を付加すると機能抑止できますが、それ以外で実現可能なのでしょうか? 宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- SAYKA
- ベストアンサー率34% (944/2776)
回答No.1
これは確かに動かないだろうね。(理論的に の話) まず onkeydown がどういう時に呼ばれるのか って事。 そして event.* がどういう時にtrueなのか って事。 判らないから質問してると思うので理由だけ書いとくね downって押されたら検知されるよね? その時 event.* ってdownを呼ぶ要因になった物がセットされてるわけだよね? altで呼ばれたらalt、左で呼ばれたら左しか検知しない筈だけど…(検知したkeyをどこかに吐いて確認したら判ると思う) 2つのキーを判別するなら「今押されているのか」というのを別にさぐる必要があるんじゃないかな。 或いはkeyupも検知して「押されたflag(自作)」をクリアして(以下略
お礼
event.keyCode = 0; を削除したら、機能抑止できました。 有難うございました。
補足
ご回答ありがとうございます。 if文でイベントを拾う事は出来ております。 event.altKeyやevent.ctrlKeyは、押下されていれば必ずtrueが返ってきます。 event.KeyCodeは、onKeydowm時に押されているボタンがコードで返ってきます。 1.altキー押下 event.altKey → true event.keyCode → 18 2.altキーを押下したまま←キーを押下 event.altKey → true event.keyCode → 37 質問したかった事は、機能抑止する場合イベントを拾ってfalseを返却すれば良いのですが、上記の場合は出来ないので何か良い方法をご存知ありませんか?という事です。 説明が下手で申し訳ありません。