• 締切済み

IE8におけるショートカットキーの無効化方法

タイトルの通り、現在IE8環境で、ショートカットキーを無効にする方法を模索しています。 ネットで調べた結果、イベントを受け取ることまでは成功するのですが、 それを無効化することができません(一部のショートカットキー)。 現在試しているのが Ctrl++→拡大 Ctrl+-→縮小 の二つです。 htmlのバージョンは4.01 Strictを使用しています。 以下ソース window.document.attachEvent('onkeydown', onKeyEvent); window.document.attachEvent('onkeyup', onKeyEvent); function onKeyEvent(e){ if(!e) e = window.event; //確認用 //console.log("Key Code : " + e.keyCode); //console.log("Event Type : " + e.type); //console.log("Ctrl Key : " + e.ctrlKey); if(e.keyCode != 17){ if(e.ctrlKey){ switch(e.keyCode){ case 187: case 189: //e.keyCode = 0; e.returnValue = false; e.cancelBubble = true; //window.event = e; return false; } } } return true; } alert()をいれると無効化できるといった記述も見たのですが、 今回はその方法は使わずに実装する予定です。 どなたか方法をご存知でしたら、ご教授ください。 (コメントアウトしているものも試しましたが、うまくいきませんでした)

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

よくわかってませんが・・・ ドキュメントレベルでのイベント処理なので、バブリングをキャンセルしても処理されてしまっているのかな? 確認はしていませんが、キャンセルできない場合の対処法のアイデアとして、ctr++が入力されたらctr+-のキーイベントを発火させるといった要領で打消すことができるのではないかと想像します。 ただし、ご提示のようにkeydown、keyupの両方を取得して発火させると、キー入力に対して打消すイベントを起こしすぎになると思いますのでご注意を。

XenoneX
質問者

お礼

解答ありがとうございます。 イベントの打消しは考えていたのですが、ご忠告の通り、 無限イベント対策などを考えるのが面倒になったため、 抑止の方法を模索してました。 ただ、やはり抑止は出来ないようなので、 とりあえずは打消しイベント発火で対策しておこうと思います。

  • DoubtOwl
  • ベストアンサー率50% (63/124)
回答No.1

http://answers.microsoft.com/ja-jp/ie/forum/ie8-windows_7/ie8ctrl%E3%83%97%E3%83%A9%E3%82%B9%E3%81%AE/8e79b0af-228c-4152-aaaf-36fc0f57fbb1?msgId=7660d4d6-740c-486e-b49c-ecd563a72085 無理な様です。 ブラウザの機能ですしね・・・ http://okwave.jp/qa/q6127224.html bodyのCSSを変更する手もあるようですが動かしてみると微妙でした。

XenoneX
質問者

お礼

解答ありがとうございます。 やはり無理ですか…。 抑止はあきらめて、別の方法で対処したいと思います。

関連するQ&A