7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ブラウザバックはダメ絶対

Last updated at Posted at 2022-03-20

初めに

業務の中でブラウザバックを禁止したい場面は多々あると思います。
今日はブラウザバックを禁止する方法について書いてみたいと思います。

試したコード

作成コード

back.html
⇒ ブラウザバックを禁止するページのhtml
error.html
⇒ ブラウザバックを押下した場合に遷移させるhtml
moto.html
⇒ back.htmlにブラウザバック用の履歴を積むための遷移元ページのhtml
stop-brawser-back.js
⇒ ブラウザバックを防ぐためのコードが書いてあるjs

詳細

back.html
<html>
  <head>
    <script
  src="https://code.jquery.com/jquery-3.6.0.min.js"
  integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
  crossorigin="anonymous"></script>
    <script src="stop-brawser-back.js"></script>
  </head>
test
</html>
error.html
<html>
  ブラウザバックを押したな!
</html>
moto.html
<html>
  <p>遷移元</p>
  <a href="back.html">遷移先</a>
</html>
stop-brawser-back.js
$(() => {
  history.pushState(null, null);
  $(window).on("popstate", (e) => {
    location.href = "error.html"
  });
}); 

動作検証

遷移元画面のhtml(moto.html)を開いて遷移先リンクを押下

元画像.png

遷移先の画面でブラウザbackを実施

先.png
※Goocle Chromeの場合はこの手順で一度画面をクリックする必要があります…この制約が少しつらいですが、ブラウザの仕様のためどうすることもできないです。良い方法があれば教えてほしいです。

ブラウザback時に別のページに遷移する

image.png

終わりに

本当に使用するとなったらerror.htmlにも工夫が必要になります。そのまま同じページに遷移させるとか工夫はいろいろできると思います。
Chromeの場合にフォーカスしないとpopstateのイベントが動かないのが気になりますね…
解決方法を知っている方がいたら教えてください!!

7
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?