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アプリの開発なら,上記のようなテクニックは非常に有効だろう。

このエントリーをはてなブックマークに追加

関連記事

「エンジニアチームの生産性の高め方」という書籍が出版されました

2023年のRemap

Remapにファームウェアビルド機能を追加しました

Google I/O 2023でのウェブ関連のトピック

2022年を振り返って