2010年11月2日火曜日

ブラウザのリロード防止

リロードの無効化が必要になったので実装しました。
※IE6,7,8で確認

[F5]、[Ctrl + R]によるリロード防止処理。
function preventReload(){
 var KEY_F5     = 116;
 var KEY_R      = 82;
 
 var e = window.event;
 var ctrl = e.ctrlKey;
 var preventFlg = false;
 
 switch (event.keyCode ){ 
  case KEY_F5:
   preventFlg = true;
   break;
  case KEY_R:
   if (ctrl) {
    preventFlg = true;
    break;
   }

 }
 if (preventFlg) {
  e.keyCode = 0;
  e.returnValue = false;
  return false;
 }
}

[F6]とか[Ctrl + Tab]でロケーションバーにフォーカス後
(ロケーションバーを表示してなくても)、[F5]を押下されると
効いてしまうんで、この辺も要件によっては無効化した方が
いいかもしれないですな。

まぁ、js無効化とかタイミング、お気に入り表示とかでも効いてしまったりするし、
そもそもクライアント側で完全に防止するのは不可能という前提で、
完全に防止したい場合は、サーバ側でワンタイムトークンとか
実装しておくのは必須。

ただ、普通の操作における誤操作防止にはある程度有効なので、
入れておくにこしたことはなさそう。


IEショートカットキー 一覧
http://www.microsoft.com/japan/enable/products/keyboard/default.mspx

その他[Alt + ←],[Alt + →]など防止したい場合は、
以下のサイトの実装が参考になると思います。

0 件のコメント:

コメントを投稿