jQuery リロード対策

jQueryでF5とCtrl + rを押したときのリロードを停止

リロード自体を止める。ブラウザのリロードボタンと右クリックで表示されたメニュー内の更新は対象外。

jQuery

$(function () { var beforecode; $(document).on('keydown',function(e){ var keycode = (e.keyCode ? e.keyCode : e.which); // F5(116)、Ctrl + r(17+82) if (keycode == 116 || keycode == 17 && beforecode == 82 || keycode == 82 && beforecode == 17) { // 中断 return false; } beforecode = keycode; }); });

リロード時の処理を制御。

jQuery

$(function () { // F5、Ctrl + r、ブラウザのリロードボタン、右クリックで表示されたメニューから再読み込み if (window.performance.navigation.type === 1) { // 中断 return false; } });

戻るボタンの抑制には、Backspace: 8、Alt + ←: 18+37 を指定。
HTML5 History APIで履歴操作。

jQuery

$(function () { var beforecode; $(document).on('keydown',function(e){ var keycode = (e.keyCode ? e.keyCode : e.which); // inputやtextareaでのBackspaceは無効にしない var tagname = $(e.target).prop('tagName'); if (keycode == 116 || keycode == 17 && beforecode == 82 || keycode == 82 && beforecode == 17 || keycode == 8 && (tagname != 'INPUT' && tagname != 'TEXTAREA') || keycode == 18 && beforecode == 37 || keycode == 37 && beforecode == 18) { // 中断 return false; } beforecode = keycode; }); // 自分自身を履歴に追加 history.pushState(null, null, null); $(window).on('popstate', function(){ history.pushState(null, null, null); }); });

Chrome52からBackspaceでブラウザバックできないようになりました。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について