IEってずるい!けどすごい!
Webアプリだと,とかく[戻る]ボタンや[再読込]ボタンが押されたときの考慮をしないといけない。最も簡単な方法は「ツールバーを消しちゃうこと」だが,大抵のWebブラウザはキーボードの操作も可能であり,[BackSpace]キーや[F5]キーで同様のことができてしまう。
しかし,IEの場合に限り,上記の操作を無効にできるようだ。
・・・
なんと,DocumentオブジェクトにKeyDownのイベントハンドラを追加することで,そのページ内のキー操作を丸ごとハックできてしまう。まるで,java.awt.FrameクラスのkeyDown(Event, int)をオーバーライドして,ウィンドウ全体のキーイベントを補足してしまうかのような動作だ。
上記の「116」は[F5]キーのキーコードなので,[F5]キーによるページの再読み込みを防ぐことができる。例えばここを「8」にすると,[BackSpace]キーの押下を無効にすることができ,ページの戻る操作をできないようにすることが可能だ。
しかし,上記のままだと,テキストフィールドに入力された文字を消したときの[BackSpace]キー押下も無効になってしまう。そこで,キーイベント発生時にフォーカスが当たっていたフォーム部品の種別が「text」もしくは「textarea」の場合は,キーイベントをそのまま有効にするようにすれば,この問題は回避できる。
・・・
これで,テキスト入力のときに[BackSpace]キーが抑制されてしまうことはなくなる。
もし対応ブラウザをIEに限定することが可能なWebアプリの開発なら,上記のようなテクニックは非常に有効だろう。