JavaScriptでブラウザの戻るボタンを無効にする方法をわかりやすく解説
Webアプリケーションの中には、ユーザーがブラウザの「戻る」ボタンで前のページに戻れないようにしたいケースがあります。例えば、フォーム送信後の二重登録防止や、特定のフローを強制したい場合などです。
本記事では、JavaScriptとjQueryを使ってブラウザの戻るボタンを事実上無効化する方法を、実際のサンプルコードとともに解説します。
仕組みのポイント
この手法は、ユーザーが前のページへ戻ろうとした瞬間に window.history.forward() を呼び出し、強制的に履歴を「進める」ことで、結果的に戻れなくするというものです。
さらに、pageshow イベントの persisted プロパティをチェックすることで、バックフォワードキャッシュ(bfcache)からページが復元された場合にも対応できます。
サンプル1:現在のHTMLページのコード
まずは、戻るボタンを無効化したい側のページ(現在のページ)のコードです。
<html>
<head>
<title>Disable Browser Back Button</title>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src = "https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</head>
<body>
<a href = "newpage.html">Next Page</a>
</body>
<script>
$(document).ready(function() {
function disablePrev() { window.history.forward() }
window.onload = disablePrev();
window.onpageshow = function(evt) { if (evt.persisted) disableBack() }
});
</script>
</html>
サンプル2:newpage.html のコード
次に、遷移先となる newpage.html のシンプルなコードです。
<html> <body> Go to back page using web browser back button. </body> </html>
コードの解説
- window.history.forward():ブラウザの履歴を1つ先に進めます。これにより、戻る操作が即座に打ち消され、前のページには戻れなくなります。
- window.onpageshow:ページが表示されたときに発生するイベントです。特に、戻る・進む操作でページが再表示された際にも発火します。
- evt.persisted:ページがbfcache(バックフォワードキャッシュ)から復元された場合に
trueになります。この場合もforward()を実行して戻る動作を防ぎます。
注意点
この方法は、戻るボタン自体を物理的に無効化しているわけではなく、「戻った直後に自動的に次のページへ進ませる」ことで、実質的に戻る操作を無効にするテクニックです。
そのため、JavaScriptが無効な環境では機能せず、またユーザー体験を損なう可能性もあります。利用する場面は、決済完了後の画面や認証フローなど、どうしても戻らせたくない場面に限定することをおすすめします。
-
JavaScriptで<strong>タグにテキストを設定する方法
Webページ上のテキストを動的に書き換えたい場面は多くあります。この記事では、jQueryを使用して<strong>タグ内のテキストをJavaScriptで変更する方法を、手順とコード例とともにわかりやすく解説します。手順1:<strong>要素を用意するまず、HTML内にテキストを差し替えたい<strong>要素を配置します。後からJavaScript側でこの要素を指定できるよう、id属性を付けておくのがポイントです。<strong id="strongDemo">Replace This strong tag</st
-
【JavaScript入門】onclick()でボタンクリック時に関数を呼び出す方法
はじめにWebページのボタンがクリックされたときに、特定の関数を実行したい場面は非常によくあります。JavaScriptでは、HTML要素のonclick属性に関数名を指定するだけで、この動作を簡単に実現できます。例えば、次のようなボタンがあるとします。<button onclick="displayingMessageOnButtonClick()">押してください</button>このボタンがクリックされた際に、指定した関数を呼び出すことが目的です。コード例以下がその完全なサンプルコードです。<!DOCTYPE html> <h